📄 note.java
字号:
package note;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Calendar;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.UndoManager;
public class Note extends JFrame {
/**
*
*/
private static final long serialVersionUID = 5207270211273679657L;
String filePath = "";
UndoManager undoManager = new UndoManager();
boolean isChange = false;
boolean wasChange = false;
JMenuBar menuBar = new JMenuBar();
//分别声明用到的各种组件,包括 菜单,菜单项等
JMenu menuFile = new JMenu("文件");//菜单栏
JMenuItem menuFileOpen = new JMenuItem("打开..");//打开选项
JMenuItem menuFileSave = new JMenuItem("保存..");//保存选项
JMenuItem menuFileExit = new JMenuItem("退出");
JMenu menuEdit = new JMenu("编辑");
JMenuItem menuFileReturn = new JMenuItem("撤销(ctrl + z)");
JMenuItem menuFileRevert = new JMenuItem("还原(ctrl + y)");
JMenuItem menuFileCut = new JMenuItem("剪切");
JMenuItem menuFileCopy = new JMenuItem("复制");
JMenuItem menuFilePaste = new JMenuItem("粘贴");
JMenuItem menuFileFind = new JMenuItem("查找");
JMenuItem menuFileReplace = new JMenuItem("替换");
JMenuItem menuFileTime = new JMenuItem("时间");
JMenu menuFormat = new JMenu("格式");
JMenuItem ditFont = new JMenuItem("字体");
JMenuItem format_color = new JMenuItem("颜色");
JMenu menuHelp = new JMenu("帮助");
JMenuItem About = new JMenuItem("关于");
//JMenuItem menuFileNext = new JMenuItem("查找下一个(N)");
JCheckBoxMenuItem autoLine = new JCheckBoxMenuItem("自动换行");
static JTextArea fileArea = new JTextArea();
JButton but_return = new JButton(new ImageIcon(
"image/houtui(keyong).jpg"));
JButton but_revert = new JButton(new ImageIcon(
"image/qianjin(keyong).jpg"));
JButton but_new = new JButton(new ImageIcon("image/new.gif"));
JButton but_open = new JButton(new ImageIcon("image/open.gif"));
JButton but_save = new JButton(new ImageIcon("image/save.gif"));
JButton but_cut = new JButton(new ImageIcon("image/cut.gif"));
JButton but_copy = new JButton(new ImageIcon("image/copy.gif"));
JButton but_paste = new JButton(new ImageIcon("image/paste.gif"));
JLabel jlb_line = new JLabel();
int line;
int col;
Dimension screenNote = getToolkit().getScreenSize();
public Note() {
this.setTitle("记事本");
//窗口关闭事件..
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
exit();
}
});// 打开
menuFileOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileOpen_actionPerformed(e);
}
});
//保存
menuFileSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileSave_actionPerformed(e);
}
});
// 退出
menuFileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileExit_actionPerformed(e);
}
});
//撤销
menuFileReturn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileReturn_actionPerformed(e);
}
});
//还原
menuFileRevert.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
fileRevert_actionPerfomend(e);
}
});
//剪切
menuFileCut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileCut_actionPerformed(e);
}
});
//复制
menuFileCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileCopy_actionPerformed(e);
}
});
//粘贴
menuFilePaste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
filePaste_actionPerformed(e);
}
});
// 查找功能
menuFileFind.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileFind_actionPerformed(e);
}
});
/*menuFileNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
}
});*/
// 替换
menuFileReplace.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileReplace_actionPermed(e);
}
});
//时间
menuFileTime.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileTime_ActionPermed(e);
}
});
//字体设置
ditFont.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
font_actionPerformed(e);
}
});
//颜色设置
format_color.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileColor_actionPerformed(e);
}
});
//关于
About.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
About_actionPerformed(e);
}
});
fileArea.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}
public void removeUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}
public void changedUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}
});
setSize(500, 450);
menuBar.add(menuFile);
menuFile.setMnemonic('F');
menuBar.add(menuEdit);
menuEdit.setMnemonic('E');
menuBar.add(menuFormat);
menuFormat.setMnemonic('G');
menuBar.add(menuHelp);
menuHelp.setMnemonic('H');
menuFile.add(menuFileOpen);
menuFileOpen.setMnemonic('O');// 访问健;
menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));// 快捷健;
menuFile.add(menuFileSave);
menuFileSave.setMnemonic('S');
menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuFile.addSeparator();
menuFile.add(menuFileExit);
menuFileExit.setMnemonic('E');
menuEdit.add(menuFileReturn);
menuFileReturn.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
InputEvent.CTRL_MASK));
menuFileReturn.setEnabled(false);
menuEdit.add(menuFileRevert);
menuFileRevert.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,
InputEvent.CTRL_MASK));
menuFileRevert.setEnabled(false);
menuEdit.add(menuFileCut);
menuFileCut.setMnemonic('C');
menuFileCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
menuEdit.add(menuFilePaste);
menuFilePaste.setMnemonic('P');
menuFilePaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
menuEdit.add(menuFileCopy);
menuFileCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuEdit.add(menuFileFind);
menuFileFind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,
InputEvent.CTRL_MASK));
//menuEdit.add(menuFileNext);
/* menuFileNext.setMnemonic('N');
menuFileNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0));
menuEdit.add(menuFileReplace);
menuFileReplace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,
InputEvent.CTRL_MASK));*/
menuFormat.add(autoLine);
autoLine.setMnemonic('W');
autoLine.setText("自动换行(W)");
autoLine.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
InputEvent.CTRL_MASK));
autoLine.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
autoLine_WrapActionPerformed(e);
}
});
menuEdit.add(menuFileTime);
menuFileTime.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
menuFormat.add(ditFont);
ditFont.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,
InputEvent.CTRL_MASK));
menuFormat.add(format_color);
format_color.setMnemonic('N');
format_color.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
menuHelp.add(About);
About.setMnemonic('H');
About.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,
InputEvent.CTRL_MASK));
this.getContentPane().add(new JScrollPane(fileArea));
setJMenuBar(menuBar);
JToolBar jtb = new JToolBar();
but_return.setToolTipText("撤销");
but_return.setEnabled(false);
but_revert.setToolTipText("恢复");
but_revert.setEnabled(false);
but_new.setToolTipText("新建文件");
but_open.setToolTipText("打开文件");
but_save.setToolTipText("保存文件");
but_cut.setToolTipText("剪切");
but_copy.setToolTipText("复制");
but_paste.setToolTipText("粘贴");
fileArea.getDocument().addUndoableEditListener(
new UndoableEditListener() {
public void undoableEditHappened(UndoableEditEvent e) {
undoManager.addEdit(e.getEdit());
Update();
line = fileArea.getLineCount();
col = fileArea.getText().length();
jlb_line.setText(" 统计: 共 " + line + "行; " + col+"字");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -