我用java写的笔记本

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.datatransfer.*;

public class NotebookUI{
public JFrame jf = null;
public JMenuBar Menubar = null;
public JTextArea jt = null;
private String fileName;
Clipboard clipboard;
public static void main(String [] arges){
NotebookUI ui = new NotebookUI();
ui.Noteui();
}
public void Noteui(){

jf = new JFrame("MyNotebook");
jf.setDefaultLookAndFeelDecorated(true);

jf.setSize(920,640);
clipboard = jf.getToolkit().getSystemClipboard();
Menubar = new JMenuBar();
Menubar.setLayout(new FlowLayout(FlowLayout.LEFT));
JMenu wj = new JMenu("文件");
//添加内容
JMenuItem op=new JMenuItem("打开");
wj.add(op);
op.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
JFileChooser filechooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("txt文本文档","txt");
filechooser.setFileFilter(filter);
int result=filechooser.showOpenDialog(null);
File file=filechooser.getSelectedFile();
if(file!=null&&result==JFileChooser.APPROVE_OPTION){
try {//将读出的文件赋给text,text用read方法读出
FileReader fr=new FileReader(file.getPath());
jt.read(fr,null);
fr.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
    }


            }
        });
JMenuItem xj=new JMenuItem("新建");
xj.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
Noteui();
            }
        });
wj.add(xj);
JMenuItem bc=new JMenuItem("保存");
bc.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
showbc();
           
        }
});
wj.add(bc);
JMenuItem lcw=new JMenuItem("另存为");
wj.add(lcw);
lcw.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result=chooser.showOpenDialog(null);
String path = chooser.getSelectedFile().getPath();
System.out.println(path);
System.out.println(chooser.getSelectedFile());
if(path!=null&&result==JFileChooser.APPROVE_OPTION)
{
try{
if(path.endsWith("txt") ){
File f = new File(path);
FileWriter fw = new FileWriter(f);
String save = jt.getText();
fw.write(save);
fw.close();
}else{
File f = new File(path+".txt");
FileWriter fw = new FileWriter(f);
String save = jt.getText();
fw.write(save);
fw.close();
}
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
            }
        });
JMenuItem tc=new JMenuItem("退出");
tc.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
System.exit(0);
            }
        });
wj.add(tc);
JMenu bj = new JMenu("编辑");
//添加内容
JMenuItem qx=new JMenuItem("全选");
JMenuItem fz=new JMenuItem("复制");
JMenuItem zt=new JMenuItem("粘贴");
JMenuItem jq=new JMenuItem("剪切");
JMenuItem cz=new JMenuItem("查找");
bj.add(qx);
qx.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
jt.requestFocus(); jt.selectAll();  jt.setSelectionColor(Color.blue);
            }
        });

bj.add(fz);
fz.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
String tempText = jt.getSelectedText();
StringSelection editText =   new StringSelection(tempText);
clipboard.setContents(editText,null);
            }
        });
bj.add(jq);
jq.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
String tempText = jt.getSelectedText();
StringSelection editText =   new StringSelection(tempText);
clipboard.setContents(editText,null);
int start= jt.getSelectionStart();
int end  = jt.getSelectionEnd();
jt.replaceRange("",start,end) ;
            }
        });
bj.add(zt);
zt.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
Transferable contents = clipboard.getContents(this);
DataFlavor  flavor= DataFlavor.stringFlavor;
if( contents.isDataFlavorSupported(flavor))
{
try

String str;
str = (String)contents.getTransferData(flavor);
int start= jt.getSelectionStart();
int end  = jt.getSelectionEnd();
jt.replaceRange(str,start,end) ;
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
});
bj.add(cz);
cz.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
Showchazhao();
}
});
JMenu gs = new JMenu("格式");
//添加内容
JMenuItem z=new JMenuItem("字体");
gs.add(z);
z.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
Showziti();
            }
        });
Menubar.add(wj);

Menubar.add(bj);
Menubar.add(gs);
jf.add(Menubar,BorderLayout.NORTH);

//设置区域
jt = new JTextArea();
jt.setFont(new Font("宋体",Font.PLAIN,25));
JScrollPane jsp = new JScrollPane(jt);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jt.setLineWrap(true); // 当字符串太长时,允许自动换行
jf.add(jsp);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置可见
jf.setVisible(true);
jf.validate();
}
public JTextField Input;
public JFrame store;
public void showbc(){
if(store == null){
store = new JFrame("保存");
store.setDefaultLookAndFeelDecorated(true);
store.setSize(450,220);

Box stBox = Box.createVerticalBox();
//在垂直BOX中添加180高度的距离
stBox.add(Box.createVerticalStrut(10));


JPanel panel = new JPanel();
panel.setOpaque(false);

JLabel label = new JLabel("请输入保存的文件名:");
label.setFont(new Font("微软雅黑", Font.PLAIN,25));

panel.add(label);
Input = new JTextField(8);
Input.setFont(new Font("微软雅黑",Font.PLAIN,20));
panel.add(Input);
stBox.add(panel);
stBox.add(Box.createVerticalStrut(20));

JPanel btn_panel =new JPanel();
btn_panel.setOpaque(false);
JButton bc_btn = new JButton("保存");
bc_btn.setFont(new Font("微软雅黑", Font.PLAIN ,20));
btn_panel.add(bc_btn);
JButton qx_btn = new JButton("取消");
qx_btn.setFont(new Font("微软雅黑",Font.PLAIN,20));
btn_panel.add(qx_btn);
stBox.add(btn_panel);

store.add(stBox);
store.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
store.setVisible(true);
store.validate();
bc_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
fileName = Input.getText();
            try {
                 FileWriter fw = new FileWriter(fileName + ".txt");
                    String save = jt.getText();
                    fw.write(save);
                    fw.close();
                } catch (Exception ex) {
                    ex.printStackTrace();
               }
                JOptionPane.showMessageDialog(null, "文件已经成功保存了!", "文件保存",
                        JOptionPane.INFORMATION_MESSAGE);
}
});
qx_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
store.setVisible(false);
}
});
}else{
store.setVisible(true);
Input.setText("");
Input.requestFocus();
store.validate();
}

}

//字体
public JLabel Output;
public JFrame ziti;
public JComboBox zi;
public JComboBox size;
public void Showziti(){
if(ziti == null){
ziti = new JFrame("字体");
ziti.setDefaultLookAndFeelDecorated(true);
ziti.setSize(450,220);

Box stBox = Box.createVerticalBox();
//在垂直BOX中添加180高度的距离
stBox.add(Box.createVerticalStrut(10));


JPanel panel1 = new JPanel();
panel1.setOpaque(false);

JLabel label1 = new JLabel("字体:");
label1.setForeground(Color.WHITE);
label1.setFont(new Font("微软雅黑", Font.PLAIN,25));
panel1.add(label1);
zi = new JComboBox();
zi.addItem("微软雅黑");
zi.addItem("楷体");
zi.addItem("宋体");
zi.addItem("新宋体");
zi.addItem("幼圆");
panel1.add(zi);
stBox.add(Box.createVerticalStrut(5));
JPanel panel2 = new JPanel();
panel2.setOpaque(false);
JLabel label2 = new JLabel("大小:");
label2.setForeground(Color.WHITE);
label2.setFont(new Font("微软雅黑", Font.PLAIN,25));
panel2.add(label2);
size = new JComboBox();
size.addItem("25");
size.addItem("8");
size.addItem("9");
size.addItem("10");
size.addItem("11");
size.addItem("12");
size.addItem("14");
size.addItem("16");
size.addItem("18");
size.addItem("20");
size.addItem("22");
size.addItem("24");
size.addItem("26");
size.addItem("28");
size.addItem("36");
size.addItem("48");
size.addItem("72");


panel2.add(size);

stBox.add(panel1);
stBox.add(panel2);
stBox.add(Box.createVerticalStrut(20));

JPanel btn_panel =new JPanel();
btn_panel.setOpaque(false);
JButton bc_btn = new JButton("确定");
bc_btn.setFont(new Font("微软雅黑", Font.PLAIN ,20));
btn_panel.add(bc_btn);
JButton qx_btn = new JButton("取消");
qx_btn.setFont(new Font("微软雅黑",Font.PLAIN,20));
btn_panel.add(qx_btn);
stBox.add(btn_panel);

ziti.add(stBox);

JPanel jPanel3 = new javax.swing.JPanel();

jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("字体预览"));
Output = new JLabel();
String i = zi.getSelectedItem().toString();
String j = size.getSelectedItem().toString();
int k = Integer.valueOf(j);
Output.setFont(new Font(i,Font.PLAIN,k));
Output.setText("AaBb");
jPanel3.add(Output);
zi.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
String i = zi.getSelectedItem().toString();
String j = size.getSelectedItem().toString();
int k = Integer.valueOf(j);
Output.setFont(new Font(i,Font.PLAIN,k));
Output.setText("AaBb");
}
});
size.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
String i = zi.getSelectedItem().toString();
String j = size.getSelectedItem().toString();
int k = Integer.valueOf(j);
Output.setFont(new Font(i,Font.PLAIN,k));
Output.setText("AaBb");
}
});

ziti.add(jPanel3,BorderLayout.EAST);

ziti.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
ziti.setVisible(true);
ziti.validate();
bc_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
String i = zi.getSelectedItem().toString();
String j = size.getSelectedItem().toString();
int k = Integer.valueOf(j);
System.out.println(zi.getSelectedItem());
System.out.println(size.getSelectedItem());
jt.setFont(new Font(i,Font.PLAIN,k));
ziti.setVisible(false);
ziti.validate();
}

});
qx_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
ziti.setVisible(false);
}
});
}else{
ziti.setVisible(true);
ziti.validate();
}

}
//查找
public JFrame chazhao;
public JTextField find;
public JTextField tihuan;

public void Showchazhao()
{if(chazhao==null){
chazhao = new JFrame("查找字符串");
chazhao.setDefaultLookAndFeelDecorated(true);
chazhao.setSize(450,220);

Box stBox = Box.createVerticalBox();
//在垂直BOX中添加180高度的距离
stBox.add(Box.createVerticalStrut(20));


JPanel panel = new JPanel();
panel.setOpaque(false);

JLabel label = new JLabel("请输入要查找的字符串:");
label.setFont(new Font("微软雅黑", Font.PLAIN,15));
panel.add(label);

find = new JTextField(8);
find.setFont(new Font("宋体", Font.PLAIN,15));
panel.add(find);


stBox.add(panel);
stBox.add(Box.createVerticalStrut(5));
JPanel panel1 = new JPanel();
panel1.setOpaque(false);

JLabel label1 = new JLabel("请输入要替换的字符串:");
label1.setFont(new Font("微软雅黑", Font.PLAIN,15));
panel1.add(label1);

tihuan = new JTextField(8);
tihuan.setFont(new Font("宋体", Font.PLAIN,15));
panel1.add(tihuan);
stBox.add(panel1);

chazhao.add(stBox,BorderLayout.WEST);
Box stBoxr = Box.createVerticalBox();
//在垂直BOX中添加180高度的距离
stBoxr.add(Box.createVerticalStrut(10));
JButton cz_btn = new JButton("查找");
cz_btn.setPreferredSize(new Dimension(105,27));
cz_btn.setFont(new Font("微软雅黑", Font.PLAIN ,12));
stBoxr.add(cz_btn);
stBoxr.add(Box.createVerticalStrut(5));
JButton czn_btn = new JButton("查找下一个");
czn_btn.setPreferredSize(new Dimension(105,27));
czn_btn.setFont(new Font("微软雅黑", Font.PLAIN ,12));
stBoxr.add(czn_btn);
stBoxr.add(Box.createVerticalStrut(5));
JButton th_btn = new JButton("替换");
th_btn.setPreferredSize(new Dimension(105,27));
th_btn.setFont(new Font("微软雅黑", Font.PLAIN ,12));
stBoxr.add(th_btn);
stBoxr.add(Box.createVerticalStrut(5));
JButton qx_btn = new JButton("取消");
qx_btn.setPreferredSize(new Dimension(105,27));
qx_btn.setFont(new Font("微软雅黑",Font.PLAIN,12));
stBoxr.add(qx_btn);
System.out.println(jt.getSelectionEnd());
chazhao.add(stBoxr,BorderLayout.EAST);
cz_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
String s = find.getText();
int x = jt.getText().indexOf(s);
System.out.println(jt.getText());
System.out.println(x);
if (x == -1) {
JOptionPane.showConfirmDialog(null, "没找到 " + s);
} else {
jt.setSelectionStart(x);
jt.setSelectionEnd(x + s.length());
jt.setSelectionColor(Color.blue);
}
}
});
czn_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
String s = find.getText();
int x = jt.getText().indexOf(s,jt.getSelectionEnd());
if (x == -1) {
JOptionPane.showConfirmDialog(null, "没找到 " + s);
} else {
jt.setSelectionStart(x);
jt.setSelectionEnd(x + s.length());
jt.setSelectionColor(Color.blue);
}
}
});
th_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(!(tihuan.getText().equals(""))){
int start= jt.getSelectionStart();
int end  = jt.getSelectionEnd();
jt.replaceRange(tihuan.getText(),start,end);
jt.setSelectionStart(start);
jt.setSelectionEnd(end);
}
}
});
qx_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
chazhao.setVisible(false);
}
});


chazhao.setVisible(true);
chazhao.validate();

}else{
chazhao.setVisible(true);
chazhao.validate();
}
}



}


猜你喜欢

转载自903180552.iteye.com/blog/2300928