import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
class JiShiBen extends JFrame implements ActionListener,MouseListener,ItemListener
{
JMenuBar menubar;
JMenu menu1,menu2,menu3,menu4,menu5;
JMenuItem item1,item2,item3,item4,item5,item6,item7,item8,item11,item12,item13,item14,item15,item16,item17,item21,item22,item51,item52,item01,item02,item03,item04,item05,item06,item07,item08,item09;
JTextArea text;
JPopupMenu popupmenu;
JFileChooser filechooser;
BufferedReader in;
BufferedWriter out;
FileWriter fileWriter;
FileReader fileReader;
Font fo;
MyFont my;ChaZhao cz;
JiShiBen()
{
super("记事本");
addMouseListener(this);
cz=new ChaZhao(this,"查找");
popupmenu=new JPopupMenu();
filechooser=new JFileChooser();
text=new JTextArea();
item1=new JMenuItem("新建");
item1.addActionListener(this);
item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));//设置快捷键
item2=new JMenuItem("打开");
item2.addActionListener(this);
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
item3=new JMenuItem("保存");
item3.addActionListener(this);
item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
item4=new JMenuItem("另存为");
item4.addActionListener(this);
item5=new JMenuItem("页面设置");
item6=new JMenuItem("打印");
item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
item7=new JMenuItem("退出");
item7.addActionListener(this);
item8=new JMenuItem("状态栏(s)");
item11=new JMenuItem("撤消");
item11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
item12=new JMenuItem("剪切");
item12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
item13=new JMenuItem("复制");
item13.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
item14=new JMenuItem("粘贴");
item14.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
item15=new JMenuItem("删除");
item16=new JMenuItem("查找");
item17=new JMenuItem("全选");
item21=new JMenuItem("自动换行");
item22=new JMenuItem("字体");
item51=new JMenuItem("帮助主题");
item52=new JMenuItem("关于记事本");
menu1=new JMenu("文件(F)");
menu2=new JMenu("编辑(E)");
menu3=new JMenu("格式(O)");
menu4=new JMenu("查看(V)");
menu5=new JMenu("帮助(H)");
menubar=new JMenuBar();
item01=new JMenuItem("撤消");
item02=new JMenuItem("剪切");
item03=new JMenuItem("复制");
item04=new JMenuItem("粘贴");
item05=new JMenuItem("删除");
item06=new JMenuItem("查找");
item07=new JMenuItem("全选");
//添加监视器
text.addMouseListener(this);
item52.addActionListener(this);
item12.addActionListener(this);
item13.addActionListener(this);
item14.addActionListener(this);
item17.addActionListener(this);
item02.addActionListener(this);
item03.addActionListener(this);
item04.addActionListener(this);
item07.addActionListener(this);
item16.addActionListener(this);
item21.addActionListener(this);
item22.addActionListener(this);
item06.addActionListener(this);
//加入采单项
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.addSeparator();//添加水平线
menu1.add(item5);
menu1.add(item6);
menu1.addSeparator();
menu1.add(item7);
menu2.add(item11);
menu2.addSeparator();
menu2.add(item12);
menu2.add(item13);
menu2.add(item14);
menu2.add(item15);
menu2.addSeparator();
menu2.add(item16);
menu2.add(item17);
menu3.add(item21);
menu3.add(item22);
menu4.add(item8);
menu5.add(item51);
menu5.add(item52);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
menubar.add(menu4);
menubar.add(menu5);
setJMenuBar(menubar);//添加菜单条
popupmenu.setVisible(true);
popupmenu.add(item01);
popupmenu.addSeparator();
popupmenu.add(item02);
popupmenu.add(item03);
popupmenu.add(item04);
popupmenu.add(item05);
popupmenu.add(item06);
popupmenu.addSeparator();
popupmenu.add(item07);
popupmenu.addSeparator();
popupmenu.add(new JMenuItem("从右向左阅读的顺序"));
popupmenu.add(new JMenuItem("显示Unicode控制字符"));
text.add(popupmenu);
add(new JScrollPane(text),BorderLayout.CENTER);
my=new MyFont(this,"字体对话框",true);
setBounds(100,100,500,500);
setVisible(true);
validate();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
if((e.getSource()==item12)||(e.getSource()==item02))
text.cut();
else if((e.getSource()==item13)||(e.getSource()==item03))
text.copy();
else if((e.getSource()==item14)||(e.getSource()==item04))
text.paste();
else if((e.getSource()==item17)||(e.getSource()==item07))
text.selectAll();
else if(e.getSource()==item21)
text.setLineWrap(true);
else if(e.getSource()==item7)
System.exit(0);
else if(e.getSource()==item1)
{ filechooser.showDialog(this,"新建");
try{ File f=new File(filechooser.getCurrentDirectory(),filechooser.getSelectedFile().getName());
f.createNewFile();
}
catch(IOException ex){}
}
else if(e.getSource()==item2)
{int state=filechooser.showOpenDialog(this);
if(state==JFileChooser.APPROVE_OPTION)
{ text.setText(null);
try{
File file=new File(filechooser.getCurrentDirectory(),filechooser.getSelectedFile().getName());
fileReader=new FileReader(file);
in=new BufferedReader(fileReader);String s=null;
while((s=in.readLine())!=null)
{
text.append(s+"\n");
}
in.close();
fileReader.close();
}
catch(IOException exp){}
}
}
else if(e.getSource()==item3)
{
int state=filechooser.showSaveDialog(this);
if(state==JFileChooser.APPROVE_OPTION)
{
try{ File file=new File(filechooser.getCurrentDirectory(),filechooser.getSelectedFile().getName());
fileWriter=new FileWriter(file);
out=new BufferedWriter(fileWriter);
out.write(text.getText(),0,(text.getText()).length());
out.close();
fileWriter.close();
}
catch(IOException exp){}
}
}
else if(e.getSource()==item4)
filechooser.showSaveDialog(this);
else if((e.getSource()==item16)||(e.getSource()==item06))
{cz.setVisible(true);}
else if(e.getSource()==item52)
{ JOptionPane.showMessageDialog(this,"本产品符合用户授权许可协议\n版权所有:张运乐","关于记事本",JOptionPane.INFORMATION_MESSAGE);}
else if(e.getSource()==item22)
{
my.setVisible(true);
if(my.getMessage()==MyFont.YES)
{
fo=MyFont.f;
text.setFont(fo);
}
else if(my.getMessage()==MyFont.NO)
{my.setVisible(false);}
}
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e)
{ if(e.getModifiers()==InputEvent.BUTTON3_MASK)
{ popupmenu.show((Component)e.getSource(),e.getX(),e.getY());}
}
public void itemStateChanged(ItemEvent e){}
}
class MyFont