📄 mytexteditor.java
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
public class MyTextEditor extends JFrame
{
public boolean changed; //控制文本域内文字是否改变情况。
public JTextArea jta=new JTextArea();
public JScrollPane jsp=new JScrollPane();
public JMenuBar jmb;
public JMenu jm;
public JMenu editjm;
public JMenu setjm;
public JMenu helpjm;
public JMenuItem newjmi,openjmi,savejmi,saveasjmi,exitjmi;
public JSeparator js1=new JSeparator();
public JSeparator js2=new JSeparator();
public ActionListener al=new A();
public String fileName=""; //定义保存的文件名
public JMenuItem copyjmi,pastejmi,cutjmi,findjmi;
public JMenuItem fjmi,bjmi;
public JMenuItem aboutjmi;
public JSeparator js3=new JSeparator();
public JToolBar jtb;
public String quick[]=new String[]{"new","open","save","saveas","copy","paste","cut"};
public MyTextEditor()
{
this.setTitle("小小记事本");
this.setSize(new Dimension(400,400));
jta.getDocument().addDocumentListener(new DocumentListener()
{
public void insertUpdate(DocumentEvent e)
{
changed=true;
}
public void removeUpdate(DocumentEvent e)
{
changed=true;
}
public void changedUpdate(DocumentEvent e)
{
changed=true;
}
}); //注册文档变化的监听。
jta.setBackground(Color.pink);
jta.setForeground(Color.blue);
jta.setFont(new Font("Fixedsys",Font.PLAIN,13));
jsp.setViewportView(jta);//相当与:JScrollPane jsp=new JScrollPane(jta);
this.getContentPane().add(jsp,BorderLayout.CENTER);
this.initComponent();
this.setJMenuBar(jmb);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if(changed==true)
{
int n;
Object[] option={"是","否"};
n=JOptionPane.showOptionDialog(null,
"你的文件还没有保存呢,你想现在保存吗?",
"保存",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
option,
option[0]);
switch(n)
{
case JOptionPane.YES_OPTION:
doSave(fileName);
break;
case JOptionPane.NO_OPTION:
break;
default: break;
}
}
System.exit(0);
}
});
}
public void initComponent()
{
jmb=new JMenuBar();
jm=new JMenu();
editjm=new JMenu();
newjmi=new JMenuItem();
openjmi=new JMenuItem();
savejmi=new JMenuItem();
saveasjmi=new JMenuItem();
exitjmi=new JMenuItem();
js1=new JSeparator();
js2=new JSeparator();
jm.setMnemonic(KeyEvent.VK_F);//定义加速键
jm.setText("文件");
newjmi.setMnemonic(KeyEvent.VK_N);
newjmi.setText("新建");
newjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
newjmi.addActionListener(al);
jm.add(newjmi);
jm.add(js1);//or:jm.addSeparator();
openjmi.setMnemonic(KeyEvent.VK_O);
openjmi.setText("打开");
openjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
openjmi.addActionListener(al);
jm.add(openjmi);
savejmi.setMnemonic(KeyEvent.VK_S);
savejmi.setText("保存");
savejmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
savejmi.addActionListener(al);
jm.add(savejmi);
saveasjmi.setMnemonic(KeyEvent.VK_A);
saveasjmi.setText("另存为");
saveasjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
saveasjmi.addActionListener(al);
jm.add(saveasjmi);
jm.add(js2);
exitjmi.setMnemonic(KeyEvent.VK_X);
exitjmi.setText("退出");
exitjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
exitjmi.addActionListener(al);
jm.add(exitjmi);
//文件菜单设置结束。
editjm.setText("编辑");
editjm.setMnemonic(KeyEvent.VK_E);
copyjmi=new JMenuItem();
pastejmi=new JMenuItem();
findjmi=new JMenuItem();
cutjmi=new JMenuItem();
copyjmi.setText("复制");
copyjmi.setMnemonic(KeyEvent.VK_C);
copyjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
copyjmi.addActionListener(al);
editjm.add(copyjmi);
pastejmi.setText("粘贴");
pastejmi.setMnemonic(KeyEvent.VK_P);
pastejmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
pastejmi.addActionListener(al);
editjm.add(pastejmi);
cutjmi.setText("剪贴");
cutjmi.setMnemonic(KeyEvent.VK_X);
cutjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
cutjmi.addActionListener(al);
editjm.add(cutjmi);
editjm.add(js3); //or:editjm.addSeparator();
findjmi.setText("查找");
findjmi.setMnemonic(KeyEvent.VK_F);
findjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
findjmi.addActionListener(al);
editjm.add(findjmi);
setjm=new JMenu();
setjm.setText("设置");
setjm.setMnemonic(KeyEvent.VK_S);
fjmi=new JMenuItem();
fjmi.setText("字体颜色...");
fjmi.setMnemonic(KeyEvent.VK_F);
fjmi.addActionListener(al);
bjmi=new JMenuItem();
bjmi.setText("背景颜色...");
bjmi.setMnemonic(KeyEvent.VK_B);
bjmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK));
bjmi.addActionListener(al);
setjm.add(fjmi);
setjm.add(bjmi);
helpjm=new JMenu();
helpjm.setText("帮助");
helpjm.setMnemonic(KeyEvent.VK_H);
aboutjmi=new JMenuItem();
aboutjmi.setText("关于");
aboutjmi.setMnemonic(KeyEvent.VK_A);
aboutjmi.addActionListener(al);
helpjm.add(aboutjmi);
jmb.add(jm);
jmb.add(editjm);
jmb.add(setjm);
jmb.add(helpjm);
jtb=new JToolBar();
jtb.setFloatable(false);
addButtons();
this.getContentPane().add(jtb,BorderLayout.PAGE_START);
createPopupMenu();
}
public void createPopupMenu()
{
JPopupMenu popupjm=new JPopupMenu();
MouseListener ml=new popuplistener(popupjm);
JMenuItem jmi=null;
jmi=new JMenuItem("新建");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newactionlistener();
}
});
popupjm.add(jmi);
popupjm.addSeparator();
jmi=new JMenuItem("打开");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openactionlistener();
}
});
popupjm.add(jmi);
jmi=new JMenuItem("保存");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doSave(fileName);
}
});
popupjm.add(jmi);
jmi=new JMenuItem("另保存");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doSaveAs();
}
});
popupjm.add(jmi);
popupjm.addSeparator();
jmi=new JMenuItem("查找");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
new Finder(MyTextEditor.this,jta).show();
}
});
popupjm.add(jmi);
popupjm.addSeparator();
jmi=new JMenuItem("复制");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jta.copy();
}
});
popupjm.add(jmi);
jmi=new JMenuItem("粘贴");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jta.paste();
}
});
popupjm.add(jmi);
jmi=new JMenuItem("剪贴");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jta.cut();
}
});
popupjm.add(jmi);
popupjm.addSeparator();
jmi=new JMenuItem("文字颜色");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Color newColor=JColorChooser.showDialog(MyTextEditor.this,"请选择文字颜色",jta.getForeground());
jta.setForeground(newColor);
}
});
popupjm.add(jmi);
jmi=new JMenuItem("背景颜色");
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Color newColor=JColorChooser.showDialog(MyTextEditor.this,"请选择背景颜色",jta.getBackground());
jta.setBackground(newColor);
}
});
popupjm.add(jmi);
jta.addMouseListener(ml);
}
class popuplistener extends MouseAdapter
{
JPopupMenu popupjm;
public popuplistener(JPopupMenu popupjm)
{
this.popupjm=popupjm;
}
public void mousePressed(MouseEvent e)
{
executeTrigger(e);
}
public void mouseReleased(MouseEvent e)
{
executeTrigger(e);
}
public void executeTrigger(MouseEvent e)
{
if(e.isPopupTrigger())
popupjm.show(e.getComponent(),e.getX(),e.getY());
}
}
public void addButtons()
{
JButton jb[]=new JButton[7];
for(int i=0;i<7;i++)
{
jb[i]=new JButton();
addListeners(jb[i],quick[i]);
jb[i].setToolTipText(quick[i]);
jb[i].setIcon(createImage("1.gif"));
jtb.add(jb[i]);
}
}
public void addListeners(JButton jb,String actionCommand)
{
if(actionCommand.equals(quick[0]))
{
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newactionlistener();
}
});
}
else if(actionCommand.equals(quick[1]))
{
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openactionlistener();
}
});
}
else if(actionCommand.equals(quick[2]))
{
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doSave(fileName);
}
});
}
else if(actionCommand.equals(quick[3]))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -