📄 texteditor.java
字号:
package editor;
import javax.swing.event.*;//列表事件
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.UIManager;
public class TextEditor{
public static void main(String[] args){
MyGui myGui=new MyGui();
myGui.setVisible(true);
myGui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}//main
}//class TextEditor
class MyGui extends JFrame{
JTextArea jTextArea;
File file=null;
char []buffer;
JFileChooser filechooser;
JMenuBar mb=new JMenuBar();
JToolBar bar=new JToolBar("工具栏");
JButton tb1,tb2,tb3,tb4,tb5,tb6;
/////////文件菜单
JMenu jMenuFile=new JMenu("文件(F)");
JMenu setColor=new JMenu("设置");
JMenuItem mNew=new JMenuItem("新建",new ImageIcon("New.jpg"));
JMenuItem mOpen = new JMenuItem("打开...",new ImageIcon("Open.jpg"));
JMenuItem mSave=new JMenuItem("保存",new ImageIcon("Save.jpg"));
JMenuItem mSaveTo=new JMenuItem("另存为...",new ImageIcon("Save.jpg"));
JMenuItem mBColor=new JMenuItem("背景颜色",new ImageIcon("Set.jpg"));
JMenuItem mExit=new JMenuItem("退出",new ImageIcon("Exit.jpg"));
/////////编辑菜单
JMenu jMenuEdit=new JMenu("编辑(E)");
JMenuItem mClear=new JMenuItem("全部清除!");
JMenuItem mCut=new JMenuItem("剪切",new ImageIcon("Cut.jpg"));
JMenuItem mCopy=new JMenuItem("复制",new ImageIcon("Copy.jpg"));
JMenuItem mPaste=new JMenuItem("粘贴",new ImageIcon("Paste.jpg"));
JMenuItem mDel=new JMenuItem("删除");
JMenuItem mSelect=new JMenuItem("全选");
///////格式菜单
JMenu jMenuForm=new JMenu("格式(O)");
JCheckBoxMenuItem jMenuHuanHang=new JCheckBoxMenuItem("自动换行",new ImageIcon("Huanhang.jpg"));
JMenuItem mFont=new JMenuItem("字体... ",new ImageIcon("Font.jpg"));
JMenuItem jColor=new JMenuItem("字体颜色...",new ImageIcon("Color.jpg"));
///////帮助菜单
JMenu jMenuHelp=new JMenu("帮助(H)");
JMenuItem jMenuHelpAbout=new JMenuItem("关于...",new ImageIcon("Help.jpg"));
///////弹出式菜单
JPopupMenu pm=new JPopupMenu();
JMenuItem jMenuFileClear1=new JMenuItem("全部清除!");
JMenuItem jMenuFileCut1=new JMenuItem("剪切");
JMenuItem jMenuFileCopy1=new JMenuItem("复制");
JMenuItem jMenuFilePaste1=new JMenuItem("粘贴");
JMenuItem jMenuFileDel1=new JMenuItem("删除");
JMenuItem jMenuFileSelect1=new JMenuItem("全选");
public MyGui(){
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.MotifLookAndFeel");
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.GTKLookAndFeel");
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.MetalLookAndFeel");
}
catch (Exception e) {
e.printStackTrace();
}
jTextArea=new JTextArea(20,20);
Container c=getContentPane();
JScrollPane sp=new JScrollPane(jTextArea);
c.add(sp);
c.add(bar,"North");
setTitle("记事本");
setSize(600,600);
//添加工具栏
tb1=new JButton(new ImageIcon("New.jpg"));
tb2=new JButton(new ImageIcon("Open.jpg"));
tb3=new JButton(new ImageIcon("Save.jpg"));
tb4=new JButton(new ImageIcon("Cut.jpg"));
tb5=new JButton(new ImageIcon("Copy.jpg"));
tb6=new JButton(new ImageIcon("Paste.jpg"));
bar.add(tb1); tb1.setToolTipText("新建");
bar.add(tb2); tb2.setToolTipText("打开");
bar.add(tb3); tb3.setToolTipText("保存");
bar.add(tb4); tb4.setToolTipText("剪切");
bar.add(tb5); tb5.setToolTipText("复制");
bar.add(tb6); tb6.setToolTipText("粘贴");
//添加文件菜单
jMenuFile.setMnemonic('F');//设置快捷键
setColor.add(mBColor);
jMenuFile.add(mNew);
jMenuFile.add(mOpen);
jMenuFile.add(mSave);
jMenuFile.add(mSaveTo);
jMenuFile.add(setColor);
jMenuFile.addSeparator();
jMenuFile.add(mExit);
mNew.setForeground(new Color(200,100,150));//设置新建菜单项的前景色
//mNew.setFont(new Font("华文楷体",Font.PLAIN,13));//设置新建菜单项的字体
setColor.setBackground(new Color(180,170,240));
mOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));//把加速器CTRL+O关联到打开菜单项
mSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
//添加编辑菜单
jMenuEdit.setMnemonic('E'); //设置快捷键
jMenuEdit.add(mClear);
jMenuEdit.addSeparator();
jMenuEdit.add(mCut);
jMenuEdit.add(mCopy);
jMenuEdit.add(mPaste);
jMenuEdit.add(mDel);
jMenuEdit.addSeparator();
jMenuEdit.add(mSelect);
mCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));//加速器
mCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
mPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
mDel.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK));
//添加格式菜单
jMenuForm.setMnemonic('O');//设置快捷键
jMenuForm.add(jMenuHuanHang);
jMenuForm.addSeparator();
jMenuForm.add(jColor);
jMenuForm.add(mFont);
mFont.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));//加速器
//添加帮助菜单
jMenuHelp.setMnemonic('H');//设置快捷键
jMenuHelp.add(jMenuHelpAbout);
//添加弹出菜单
jTextArea.add(pm);
pm.add(jMenuFileClear1);
pm.addSeparator();
pm.add(jMenuFileCut1);
pm.add(jMenuFileCopy1);
pm.add(jMenuFilePaste1);
pm.add(jMenuFileDel1);
pm.addSeparator();
pm.add(jMenuFileSelect1);
// 添加菜单至菜单条并设置颜色
mb.add(jMenuFile);
mb.add(jMenuEdit);
mb.add(jMenuForm);
mb.add(jMenuHelp);
setJMenuBar(mb);
jMenuFile.setFont(new Font("楷体_GB2312",Font.PLAIN,14));
jMenuForm.setFont(new Font("楷体_GB2312",Font.PLAIN,14));
jMenuEdit.setFont(new Font("楷体_GB2312",Font.PLAIN,14));
jMenuHelp.setFont(new Font("楷体_GB2312",Font.PLAIN,14));
jMenuFile.setBackground(new Color(180,170,240));
jMenuEdit.setBackground(new Color(180,170,240));
jMenuForm.setBackground(new Color(180,170,240));
jMenuHelp.setBackground(new Color(180,170,240));
mb.setBackground(new Color(180,170,240));
//////文件菜单的事件监听器////
filechooser=new JFileChooser();
//新建菜单项事件
mNew.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jTextArea.setText("");
}
} );
//打开菜单项事件
mOpen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
filechooser.setSelectedFile(file);
int returnVal=filechooser.showOpenDialog(MyGui.this);//参数是父组件
if(returnVal==JFileChooser.APPROVE_OPTION)//如果点击确认...
{ file=filechooser.getSelectedFile();//若再接getPath()则返回File对象的名字
try{FileReader fr=new FileReader(file);
int len=(int)file.length();
buffer=new char[len];
fr.read(buffer,0,len);
fr.close();
jTextArea.setText(new String(buffer));
}catch(IOException ep){ep.getMessage();}
}//if
}
});
//保存菜单项事件
mSave.addActionListener(new SaveListener());//内部类事件处理
mSaveTo.addActionListener(new SaveListener());//内部类事件处理
//背景颜色菜单项
mBColor.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Color color = JColorChooser.showDialog(MyGui.this, "选择背景颜色", null);
jTextArea.setBackground(color) ;
}
} );
//退出菜单项事件
mExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{ System.exit(0);} //要是加上一个对话框提示保存文件就OK
});
///////////编辑菜单事件监听器
mClear.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{jTextArea.setText("");}
});//全部清除
mCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{jTextArea.copy();}
});//拷贝
mCut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{jTextArea.cut(); }
});//剪切
mPaste.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ jTextArea.paste(); }
}); //粘贴
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -