diff --git a/.classpath b/.classpath
deleted file mode 100644
index ac9ce57c2f4d3a99eb1868e101f3060156474663..0000000000000000000000000000000000000000
--- a/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
index ae3c1726048cd06b9a143e0376ed46dd9b9a8d53..e0244b6702986222455bd505630bb0593dbd8a8e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/bin/
+out/
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..35410cacdc5e87f985c93a96520f5e11a5c822e4
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..07115cdf15dd408d3affb9240e112578e04abf68
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ea25cb6475b9409a6cd5868ef50ea0cdc7ce9a84
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.project b/.project
deleted file mode 100644
index b7e8a74e9dd98bfb5b42b70cd6033510d6823948..0000000000000000000000000000000000000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- java2022spring
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index dbc27c5dc60ef7094a88953087ea0294b6c44a38..0000000000000000000000000000000000000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=17
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=17
diff --git a/java2022spring.iml b/java2022spring.iml
new file mode 100644
index 0000000000000000000000000000000000000000..c90834f2d607afe55e6104d8aa2cdfffb713f688
--- /dev/null
+++ b/java2022spring.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/img/SCAU.jpg b/src/img/SCAU.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..748cc786d7f7f5ae5eb0d3743a5bd71ecb034565
Binary files /dev/null and b/src/img/SCAU.jpg differ
diff --git a/src/img/logo.png b/src/img/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..b08ee8cce55b8f0e9e16c3605f1c4f48c30f0eb7
Binary files /dev/null and b/src/img/logo.png differ
diff --git a/src/java2022spring/NotepadFrame.java b/src/java2022spring/NotepadFrame.java
new file mode 100644
index 0000000000000000000000000000000000000000..5597561d24506161324805fb0f17662851cfb01e
--- /dev/null
+++ b/src/java2022spring/NotepadFrame.java
@@ -0,0 +1,591 @@
+package java2022spring;
+
+import javax.swing.*;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.UndoManager;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import static java.awt.event.InputEvent.SHIFT_DOWN_MASK;
+
+public class NotepadFrame extends JFrame {
+ int lineNum = 1; //定义变量lineNum储存行数
+ int columnNum = 1; //定义变量columnNum储存列数
+ int length = 0; //定义变量length储存字数
+ JToolBar toolBar = new JToolBar();
+ JFileChooser fileChooser = new JFileChooser();
+ UndoManager um = new UndoManager();
+ File currentFile; //currentFile用于储存当前文件
+ String oldValue; //oldValue用于储存文本操作前的内容
+ String currentValue; //currentValue用于储存当前的内容
+ boolean isTextChange; //isTextChange用于判断文本内容是否发生改变
+ boolean isNewFile = true; //isNewFile用于判断文件是否已经创建
+ //声明文本区、滚动条、菜单栏
+ JTextArea textPane;
+ JScrollPane scrollPane;
+ JMenuBar menuBar;
+ //声明一级菜单“文件”,并声明其二级菜单
+ JMenu fileMenu;
+ JMenuItem newFile,newFrame,openFile,saveFile,saveAs,exit;
+ //声明一级菜单“编辑”,并声明其二级菜单
+ JMenu editMenu;
+ JMenuItem undo,redo,cut,copy,paste,del,selectAll;
+ //声明一级菜单“格式”,并声明其二级菜单
+ JMenu formatMenu;
+ JMenuItem font,insertTime;
+ JCheckBoxMenuItem autoWrap;
+ //声明一级菜单“查看”,并声明其二级菜单,和一个三级菜单
+ JMenu viewMenu;
+ JMenu zoom;
+ JMenuItem enlarge,reduce,reset;
+ JCheckBoxMenuItem statusBar,protectEye;
+ //声明一级菜单“帮助”,并声明其二级菜单
+ JMenu helpMenu;
+ JMenuItem readHelp,aboutNotepad;
+
+ //构造方法
+ public NotepadFrame() {
+ init(); //初始化窗体
+ toolBarInit(); //初始化状态栏
+ setContextMenu(); //初始化右键菜单栏
+ setShortcut(); //初始化快捷键
+ setIconImage(new ImageIcon("src/img/logo.png").getImage());
+ setTitle("无标题 - 记事本");
+ setSize(800, 800);
+ setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+ setVisible(true);
+ setLocationRelativeTo(null);
+ //监听窗口关闭操作,判断是否保存并提示用户
+ addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ currentValue = textPane.getText(); //获取当前文本
+ isTextChange = !currentValue.equals(oldValue); //若文本改变值为true,否则为false
+ if (isTextChange) {
+ int saveChoose = JOptionPane.showConfirmDialog(null,"您的文件尚未保存,请问是否保存?","提示",JOptionPane.YES_NO_CANCEL_OPTION);
+ if (saveChoose==JOptionPane.YES_OPTION) {
+ if (isNewFile) {
+ saveAs(); //调用“另存为”方法
+ }
+ else{
+ saveFile(); //调用“保存”方法
+ }
+ }
+ else if (saveChoose==JOptionPane.NO_OPTION) {
+ dispose();
+ }
+ }
+ else
+ dispose();
+ }
+ });
+ }
+
+ public void init() {
+ menuBar = new JMenuBar(); //创建菜单栏
+ //创建第一个一级菜单“文件”和其所有二级菜单
+ fileMenu = new JMenu("文件(F)");
+ newFile = new JMenuItem("新建");
+ newFrame = new JMenuItem("新建窗口");
+ openFile = new JMenuItem("打开");
+ saveFile = new JMenuItem("保存");
+ saveAs = new JMenuItem("另存为");
+ exit = new JMenuItem("退出");
+ //将二级菜单加入到第一个一级菜单中
+ fileMenu.add(newFile);
+ fileMenu.add(newFrame);
+ fileMenu.add(openFile);
+ fileMenu.add(saveFile);
+ fileMenu.add(saveAs);
+ fileMenu.addSeparator();
+ fileMenu.add(exit);
+ menuBar.add(fileMenu);
+ //创建第二个一级菜单“编辑”和其所有二级菜单
+ editMenu = new JMenu("编辑(E)");
+ undo = new JMenuItem("撤销");
+ redo = new JMenuItem("恢复");
+ cut = new JMenuItem("剪切");
+ copy = new JMenuItem("复制");
+ paste = new JMenuItem("粘贴");
+ del = new JMenuItem("删除");
+ selectAll = new JMenuItem("全选");
+ //将二级菜单加入到第二个一级菜单中
+ editMenu.add(undo);
+ editMenu.add(redo);
+ editMenu.addSeparator();
+ editMenu.add(cut);
+ editMenu.add(copy);
+ editMenu.add(paste);
+ editMenu.add(del);
+ editMenu.addSeparator();
+ editMenu.add(selectAll);
+ menuBar.add(editMenu);
+ //创建第三个一级菜单“格式”和其所有二级菜单
+ formatMenu = new JMenu("格式(O)");
+ font = new JMenuItem("字体...");
+ insertTime = new JMenuItem("日期和时间");
+ autoWrap = new JCheckBoxMenuItem("自动换行");
+ //将二级菜单加入到第三个一级菜单中
+ formatMenu.add(font);
+ formatMenu.add(autoWrap);
+ formatMenu.add(insertTime);
+ menuBar.add(formatMenu);
+ //创建第四个一级菜单“查看”和其所有二级菜单
+ viewMenu = new JMenu("查看(V)");
+ statusBar = new JCheckBoxMenuItem("状态栏");
+ protectEye = new JCheckBoxMenuItem("护眼模式");
+ zoom = new JMenu("缩放");
+ enlarge = new JMenuItem("放大");
+ reduce = new JMenuItem("缩小");
+ reset = new JMenuItem("还原默认缩放");
+ //将二级菜单加入到第四个一级菜单中
+ zoom.add(enlarge);
+ zoom.add(reduce);
+ zoom.addSeparator();
+ zoom.add(reset);
+ viewMenu.add(zoom);
+ viewMenu.add(statusBar);
+ viewMenu.add(protectEye);
+ menuBar.add(viewMenu);
+ //创建第五个一级菜单“查看”和其所有二级菜单
+ helpMenu = new JMenu("帮助(H)");
+ readHelp = new JMenuItem("查看帮助");
+ aboutNotepad = new JMenuItem("关于记事本");
+ //将二级菜单加入到第五个一级菜单中
+ helpMenu.add(readHelp);
+ helpMenu.addSeparator();
+ helpMenu.add(aboutNotepad);
+ menuBar.add(helpMenu);
+ //显示菜单栏
+ setJMenuBar(menuBar);
+
+ //设置文本框和默认字体及大小
+ textPane = new JTextArea();
+ textPane.setFont(new Font("宋体",Font.PLAIN,16));
+ textPane.getDocument().addUndoableEditListener(um); //获取可撤销的操作
+ add(textPane);
+ //储存文本框内现有的文本
+ oldValue = textPane.getText();
+ //添加滚动条
+ scrollPane = new JScrollPane(textPane);
+ add(scrollPane);
+
+ //为“文件”菜单的所有选项注册监听器
+ newFile.addActionListener(e -> newFile());
+ newFrame.addActionListener(e -> newFrame());
+ openFile.addActionListener(e -> openFile());
+ saveFile.addActionListener(e -> saveFile());
+ saveAs.addActionListener (e -> saveAs());
+ exit.addActionListener(e -> exit());
+ //为”编辑“菜单的所有选项注册监听器
+ undo.addActionListener(e -> undo());
+ redo.addActionListener(e -> redo());
+ cut.addActionListener(e -> cut());
+ copy.addActionListener(e -> copy());
+ paste.addActionListener(e -> paste());
+ del.addActionListener(e -> del());
+ selectAll.addActionListener(e -> selectAll());
+ //为“格式”菜单的所有选项注册监听器
+ insertTime.addActionListener(e -> insertTime());
+ font.addActionListener(e -> font());
+ autoWrap.addActionListener(e -> autoWarp());
+ //为“查看”菜单的所有选项注册监听器
+ protectEye.addActionListener(e -> protectEye());
+ statusBar.addActionListener(e -> toolBar.setVisible(statusBar.getState()));
+ enlarge.addActionListener(e -> textPane.setFont(new Font(textPane.getFont().getName(),textPane.getFont().getStyle(),textPane.getFont().getSize()+2))); //字体大小+2
+ reduce.addActionListener(e -> textPane.setFont(new Font(textPane.getFont().getName(),textPane.getFont().getStyle(),textPane.getFont().getSize()-2))); //字体大小-2
+ reset.addActionListener(e -> textPane.setFont(new Font(textPane.getFont().getName(),textPane.getFont().getStyle(),16)));
+ //为”帮助“菜单的所有选项注册监听器
+ readHelp.addActionListener(e -> readHelp());
+ aboutNotepad.addActionListener(e -> aboutNotepad());
+ }
+
+ //“新建”方法
+ void newFile() {
+ currentValue = textPane.getText(); //获取当前文本
+ isTextChange = !currentValue.equals(oldValue); //若文本改变值为true,否则为false
+ if (isTextChange) {
+ int saveChoose = JOptionPane.showConfirmDialog(null,"您的文件尚未保存,请问是否保存?","提示",JOptionPane.YES_NO_CANCEL_OPTION);
+ if (saveChoose==JOptionPane.YES_OPTION) {
+ if (isNewFile) {
+ saveAs();
+ }
+ else
+ saveFile();
+ }
+ else if (saveChoose==JOptionPane.NO_OPTION) {
+ textPane.setText(null);
+ setTitle("无标题 - 记事本");
+ isNewFile = true;
+ oldValue = textPane.getText();
+ }
+ }
+ else {
+ textPane.setText(null);
+ setTitle("无标题 - 记事本");
+ isNewFile = true;
+ oldValue = textPane.getText();
+ }
+ isNewFile = true;
+ }
+
+ //“新建窗口”方法
+ void newFrame() {
+ JFrame frame = new NotepadFrame();
+ frame.setBounds(new Rectangle((int)getBounds().getX()+20,(int)getBounds().getY()+20,(int)getBounds().getWidth(),(int)getBounds().getHeight()));
+ frame.setVisible(true);
+ frame.setTitle("无标题 - 记事本");
+ frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ }
+
+ //“打开文件”方法
+ void openFile() {
+ currentValue = textPane.getText(); //获取当前文本
+ isTextChange = !currentValue.equals(oldValue); //若文本改变值为true,否则为false
+ if (isTextChange) {
+ int saveChoose = JOptionPane.showConfirmDialog(null, "您的文件尚未保存,请问是否保存?", "提示", JOptionPane.YES_NO_CANCEL_OPTION);
+ if (saveChoose == JOptionPane.YES_OPTION) {
+ if (isNewFile) {
+ saveAs();
+ } else {
+ saveFile();
+ open();
+ }
+ }
+ else if (saveChoose == JOptionPane.NO_OPTION) {
+ open();
+ }
+ }
+ else
+ open();
+ }
+
+ //“保存文件”方法
+ void saveFile() {
+ if (isNewFile) {
+ saveAs();
+ }
+ else {
+ try{
+ FileWriter fw = new FileWriter(currentFile);
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write(textPane.getText(),0,textPane.getText().length());
+ bw.flush();
+ fw.close();
+ }catch (IOException ex){
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ //“另存为”方法
+ void saveAs() {
+ fileChooser.setDialogTitle("另存为");
+ save();
+ }
+
+ //“退出”方法
+ void exit() {
+ currentValue = textPane.getText(); //获取当前文本
+ isTextChange = !currentValue.equals(oldValue); //若文本改变值为true,否则为false
+ if (isTextChange) {
+ int saveChoose = JOptionPane.showConfirmDialog(null,"您的文件尚未保存,请问是否保存?","提示",JOptionPane.YES_NO_CANCEL_OPTION);
+ if (saveChoose==JOptionPane.YES_OPTION) {
+ if (isNewFile) {
+ saveAs();
+ }
+ else{
+ saveFile();
+ }
+ }
+ else if (saveChoose==JOptionPane.NO_OPTION) {
+ dispose();
+ }
+ }
+ else
+ dispose();
+ }
+
+ //“撤销”方法
+ void undo() {
+ if(um.canUndo()) {
+ try{
+ um.undo();
+ }catch (CannotUndoException ex){
+ System.out.println("Unable to undo:" + ex);
+ }
+ }
+ }
+
+ //“恢复”方法
+ void redo() {
+ if(um.canRedo()) {
+ try {
+ um.redo();
+ } catch (CannotRedoException ex){
+ System.out.println("Unable to redo:" + ex);
+ }
+ }
+ }
+
+ //“剪切”方法
+ void cut() {
+ textPane.cut();
+ }
+
+ //“复制”方法
+ void copy() {
+ textPane.copy();
+ }
+
+ //“粘贴”方法
+ void paste() {
+ textPane.paste();
+ }
+
+ //“删除”方法
+ void del() {
+ textPane.replaceSelection(null);
+ }
+
+ //“全选”方法
+ void selectAll() {
+ textPane.selectAll();
+ }
+
+ //“自动换行”方法
+ void autoWarp() {
+ if (textPane.getLineWrap()) {
+ textPane.setLineWrap(false);
+ } else if (!textPane.getLineWrap()) {
+ textPane.setLineWrap(true);
+ }
+ }
+
+ //“查看帮助”方法
+ void readHelp() {
+ JDialog help = new readHelpDialog();
+ help.setTitle("帮助");
+ help.setContentPane(new readHelpDialog().panel1);
+ help.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ help.setModal(true);
+ help.setSize(300,500);
+ help.setLocationRelativeTo(null);
+ help.setResizable(false);
+ help.setVisible(true);
+ }
+
+ //“关于记事本”方法
+ void aboutNotepad() {
+ JDialog about = new aboutNotepadDialog();
+ about.setTitle("关于记事本");
+ about.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ about.setModal(true);
+ about.setSize(400, 400);
+ about.setLocationRelativeTo(null);
+ about.setResizable(false);
+ about.setVisible(true);
+ }
+
+ //”打开“方法
+ void open() {
+ String s;
+ fileChooser = new JFileChooser();
+ fileChooser.setDialogTitle("打开文件");
+ int result = fileChooser.showOpenDialog(null);
+ if (result == JFileChooser.CANCEL_OPTION) {
+ return;
+ }
+ File f = fileChooser.getSelectedFile();
+ textPane.setText(null);
+ try {
+ FileReader fileReader = new FileReader(f);
+ BufferedReader bufferedReader = new BufferedReader(fileReader);
+ while ((s = bufferedReader.readLine()) != null) {
+ textPane.append(s);
+ }
+ setTitle(f.getName()+" - 记事本");
+ bufferedReader.close();
+ fileReader.close();
+ currentFile = f;
+ oldValue = textPane.getText();
+ isNewFile = false;
+ }
+ catch (IOException ex){
+ ex.printStackTrace();
+ }
+ }
+
+ //"保存"方法
+ void save() {
+ int result = fileChooser.showSaveDialog(this);
+ fileChooser.setDialogTitle("保存");
+ if (result == JFileChooser.CANCEL_OPTION) {
+ return;
+ }
+ File saveFileName = fileChooser.getSelectedFile();
+ try{
+ FileWriter fw = new FileWriter(saveFileName);
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write(textPane.getText(),0,textPane.getText().length());
+ bw.flush();
+ bw.close();
+ this.setTitle(saveFileName.getName() + " - 记事本");
+ oldValue = textPane.getText();
+ currentFile = saveFileName;
+ isNewFile = false;
+ }catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ //初始化状态栏方法
+ void toolBarInit() {
+ toolBar = new JToolBar();
+ toolBar.setSize(textPane.getSize().width,20);
+ toolBar.setVisible(true);
+ statusBar.setState(true);
+ JLabel tool_label1 = new JLabel(" 第 " + lineNum + " 行 ");
+ JLabel tool_label2 = new JLabel(" 第 " + columnNum + " 列 ");
+ JLabel tool_label3 = new JLabel(" 共" + length + "字 ");
+ toolBar.add(tool_label1);
+ toolBar.addSeparator();
+ toolBar.add(tool_label2);
+ toolBar.addSeparator();
+ toolBar.add(tool_label3);
+ add(toolBar,BorderLayout.SOUTH);
+ toolBar.setFloatable(false);
+ textPane.addCaretListener(e -> {
+ JTextArea editArea = (JTextArea)e.getSource();
+ try {
+ int caretPosition = editArea.getCaretPosition();
+ lineNum = editArea.getLineOfOffset(caretPosition);
+ columnNum = caretPosition - textPane.getLineStartOffset(lineNum);
+ lineNum += 1;
+ tool_label1.setText(" 第 " + lineNum + " 行 ");
+ tool_label2.setText(" 第 " + columnNum + " 列 ");
+ length = textPane.getText().length();
+ tool_label3.setText(" 共 " + length + " 字 ");
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ });
+ }
+ //初始化快捷键方法
+ void setShortcut() {
+ //为一级菜单添加热键
+ fileMenu.setMnemonic('F');
+ editMenu.setMnemonic('E');
+ formatMenu.setMnemonic('O');
+ viewMenu.setMnemonic('V');
+ helpMenu.setMnemonic('H');
+ //为一些菜单选项添加快捷键
+ newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK));
+ newFrame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK+SHIFT_DOWN_MASK));
+ openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
+ saveFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
+ saveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12,0));
+ exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,InputEvent.ALT_DOWN_MASK));
+ undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
+ redo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_DOWN_MASK));
+ cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
+ copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
+ paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
+ del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
+ selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
+ insertTime.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
+ font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_DOWN_MASK));
+ autoWrap.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,InputEvent.CTRL_DOWN_MASK));
+ statusBar.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,InputEvent.CTRL_DOWN_MASK));
+ enlarge.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ADD,InputEvent.CTRL_DOWN_MASK));
+ reduce.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT,InputEvent.CTRL_DOWN_MASK));
+ reset.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_0,InputEvent.CTRL_DOWN_MASK));
+ protectEye.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_DOWN_MASK));
+ readHelp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_DOWN_MASK));
+ aboutNotepad.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK));
+ }
+
+ //初始化右键菜单方法
+ void setContextMenu() {
+ //实例化右键菜单及其菜单选项
+ JPopupMenu popupMenu = new JPopupMenu();
+ JMenuItem pm_Undo = new JMenuItem("撤销");
+ JMenuItem pm_Redo = new JMenuItem("恢复");
+ JMenuItem pm_Cut = new JMenuItem("剪切");
+ JMenuItem pm_Copy = new JMenuItem("复制");
+ JMenuItem pm_Paste = new JMenuItem("粘贴");
+ JMenuItem pm_Del = new JMenuItem("删除");
+ JMenuItem pm_All = new JMenuItem("全选");
+ //为右键鼠标动作注册监听器MouseListener
+ textPane.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ if (e.isPopupTrigger()) {
+ popupMenu.show(e.getComponent(), e.getX(), e.getY()); //获取鼠标的位置,并在位置上显示菜单
+ }
+ textPane.requestFocus();
+ }
+ public void mouseReleased(MouseEvent e) {
+ if (e.isPopupTrigger()) {
+ popupMenu.show(e.getComponent(), e.getX(), e.getY());
+ }
+ textPane.requestFocus();
+ }
+ });
+ //把选项添加进右键菜单中
+ popupMenu.add(pm_Undo);
+ popupMenu.add(pm_Undo);
+ popupMenu.add(pm_Redo);
+ popupMenu.addSeparator();
+ popupMenu.add(pm_Cut);
+ popupMenu.add(pm_Copy);
+ popupMenu.add(pm_Paste);
+ popupMenu.add(pm_Del);
+ popupMenu.addSeparator();
+ popupMenu.add(pm_All);
+ //为右键菜单各个选项注册监听器
+ pm_Undo.addActionListener(e -> undo());
+ pm_Redo.addActionListener(e -> redo());
+ pm_Cut.addActionListener(e -> cut());
+ pm_Copy.addActionListener(e -> copy());
+ pm_Paste.addActionListener(e -> paste());
+ pm_Del.addActionListener(e -> del());
+ pm_All.addActionListener(e -> selectAll());
+ }
+
+ //"字体"方法
+ void font() {
+ setFont sf = new setFont();
+ if (sf.getState()==1){ //值为1代表用户确认修改字体
+ textPane.setFont(sf.getFont());
+ if (sf.getColor()==null){
+ return;
+ }
+ else
+ textPane.setForeground(sf.getColor());
+ textPane.setVisible(true);
+ textPane.repaint();
+ }
+ if (sf.getState()==0){ //值为0代表用户取消
+ textPane.repaint();
+ }
+ }
+
+ void protectEye(){
+ if (protectEye.getState())
+ textPane.setBackground(new Color(207,232,204));
+ else if (!protectEye.getState()){
+ textPane.setBackground(new Color(255, 255, 255));
+ }
+ }
+
+ void insertTime(){
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置日期和时间的格式
+ String date = sdf.format(new Date()); //获取时间和日期
+ textPane.append(date);
+ }
+}
\ No newline at end of file
diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java
deleted file mode 100644
index 24deb29bfc0e5f50fdedcd21b504e77b529d48b6..0000000000000000000000000000000000000000
--- a/src/java2022spring/Test.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package java2022spring;
-
-public class Test {
- public static void main(String[] args) {
- System.out.println("Hello world!");
- }
-}
diff --git a/src/java2022spring/aboutNotepadDialog.java b/src/java2022spring/aboutNotepadDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..88373abcfcb3e346e7f39da09041d975fd0b8bfd
--- /dev/null
+++ b/src/java2022spring/aboutNotepadDialog.java
@@ -0,0 +1,146 @@
+package java2022spring;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.Objects;
+
+public class aboutNotepadDialog extends JDialog {
+ JPanel jp;
+ JLabel img;
+
+ public aboutNotepadDialog(){
+ jp = new JPanel();
+ jp.setLayout(new BorderLayout(0, 0));
+ img = new JLabel();
+ img.setHorizontalAlignment(0);
+ img.setHorizontalTextPosition(2);
+ img.setIcon(new ImageIcon(Objects.requireNonNull(getClass().getResource("/img/SCAU.jpg"))));
+ img.setText("");
+ jp.add(img, BorderLayout.NORTH);
+
+ final JLabel label1 = new JLabel();
+ label1.setForeground(new Color(-9539986));
+ label1.setHorizontalAlignment(0);
+ label1.setText("Copyright © 2022 Xiangcheng Zeng. All Rights Reserved.");
+ jp.add(label1, BorderLayout.SOUTH);
+
+ final JPanel panel1 = new JPanel();
+ panel1.setLayout(new GridBagLayout());
+ jp.add(panel1, BorderLayout.CENTER);
+ final JPanel spacer1 = new JPanel();
+ add(jp);
+
+ GridBagConstraints gbc;
+ gbc = new GridBagConstraints();
+ gbc.gridx = 0;
+ gbc.gridy = 6;
+ gbc.fill = GridBagConstraints.VERTICAL;
+ panel1.add(spacer1, gbc);
+
+ final JLabel label2 = new JLabel();
+ label2.setText("作者信息");
+ label2.setFont(new Font("宋体",Font.BOLD,18));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 6;
+ panel1.add(label2, gbc);
+
+ final JLabel label3 = new JLabel();
+ label3.setText("姓名:曾祥程");
+ label3.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 7;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label3, gbc);
+
+ final JLabel label4 = new JLabel();
+ label4.setText("班级:21级信息管理与信息系统2班");
+ label4.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 8;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label4, gbc);
+
+ final JLabel label5 = new JLabel();
+ label5.setText("学号:202125710224");
+ label5.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 9;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label5, gbc);
+
+ final JLabel label6 = new JLabel();
+ label6.setText("邮箱:202125710224@stu.scau.edu.cn");
+ label6.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 10;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label6, gbc);
+
+ final JLabel label7 = new JLabel();
+ label7.setText("电话:19303028985");
+ label7.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 11;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label7, gbc);
+
+ final JLabel label8 = new JLabel();
+ label8.setText("项目信息");
+ label8.setFont(new Font("宋体",Font.BOLD,18));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 0;
+ panel1.add(label8, gbc);
+
+ final JLabel label9 = new JLabel();
+ label9.setText("项目:Java面向对象程序设计实验—设计性实验");
+ label9.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label9, gbc);
+
+ final JLabel label10 = new JLabel();
+ label10.setText("任课教师:吴春胤 副教授");
+ label10.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 4;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label10, gbc);
+
+ final JLabel label11 = new JLabel();
+ label11.setText("名称:记事本");
+ label11.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 2;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label11, gbc);
+
+ final JLabel label12 = new JLabel();
+ label12.setText(" ");
+ label12.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 5;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label12, gbc);
+
+ final JLabel label13 = new JLabel();
+ label13.setText("版本号:1.0.0");
+ label13.setFont(new Font("宋体",Font.PLAIN,14));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 3;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel1.add(label13, gbc);
+ }
+}
diff --git a/src/java2022spring/readHelpDialog.java b/src/java2022spring/readHelpDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2722096e51ca681f34b2d78c5f835dd8e00d67f
--- /dev/null
+++ b/src/java2022spring/readHelpDialog.java
@@ -0,0 +1,173 @@
+package java2022spring;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class readHelpDialog extends JDialog {
+ JPanel panel1;
+
+ public readHelpDialog() {
+ panel1 = new JPanel();
+ panel1.setLayout(new BorderLayout(0, 0));
+ final JLabel label1 = new JLabel();
+ label1.setHorizontalAlignment(0);
+ label1.setText("常用快捷键");
+ label1.setFont(new Font("宋体", Font.BOLD, 22));
+ panel1.add(label1, BorderLayout.NORTH);
+
+ final JPanel panel2 = new JPanel();
+ panel2.setLayout(new GridBagLayout());
+ panel1.add(panel2, BorderLayout.CENTER);
+ final JPanel spacer1 = new JPanel();
+ GridBagConstraints gbc;
+ gbc = new GridBagConstraints();
+ gbc.gridx = 0;
+ gbc.gridy = 2;
+ gbc.fill = GridBagConstraints.VERTICAL;
+ panel2.add(spacer1, gbc);
+
+ final JLabel label2 = new JLabel();
+ label2.setText("新建:Ctrl+N");
+ label2.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 0;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label2, gbc);
+
+ final JLabel label3 = new JLabel();
+ label3.setText("打开:Ctrl+O");
+ label3.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 2;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label3, gbc);
+
+ final JLabel label4 = new JLabel();
+ label4.setText("保存:Ctrl+S");
+ label4.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 3;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label4, gbc);
+
+ final JLabel label5 = new JLabel();
+ label5.setText("新建窗口:Ctrl+Shift+N");
+ label5.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label5, gbc);
+
+ final JLabel label6 = new JLabel();
+ label6.setText("另存为:F12");
+ label6.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 4;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label6, gbc);
+
+ final JLabel label7 = new JLabel();
+ label7.setText("撤销:Ctrl+Z");
+ label7.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 5;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label7, gbc);
+
+ final JLabel label8 = new JLabel();
+ label8.setText("恢复:Ctrl+R");
+ label8.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 6;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label8, gbc);
+
+ final JLabel label9 = new JLabel();
+ label9.setText("剪切:Ctrl+X");
+ label9.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 7;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label9, gbc);
+
+ final JLabel label10 = new JLabel();
+ label10.setText("复制:Ctrl+C");
+ label10.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 8;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label10, gbc);
+
+ final JLabel label11 = new JLabel();
+ label11.setText("粘贴:Ctrl+V");
+ label11.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 9;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label11, gbc);
+
+ final JLabel label12 = new JLabel();
+ label12.setText("删除:Ctrl+D");
+ label12.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 10;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label12, gbc);
+
+ final JLabel label13 = new JLabel();
+ label13.setText("全选:Ctrl+A");
+ label13.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 11;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label13, gbc);
+
+ final JLabel label14 = new JLabel();
+ label14.setText("自动换行:Ctrl+W");
+ label14.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 12;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label14, gbc);
+
+ final JLabel label15 = new JLabel();
+ label15.setText("状态栏:Ctrl+M");
+ label15.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 13;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label15, gbc);
+
+ final JLabel label16 = new JLabel();
+ label16.setText("查看帮助:Ctrl+H");
+ label16.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 14;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label16, gbc);
+
+ final JLabel label17 = new JLabel();
+ label17.setText("关于记事本:Ctrl+T");
+ label17.setFont(new Font("宋体", Font.PLAIN, 22));
+ gbc = new GridBagConstraints();
+ gbc.gridx = 1;
+ gbc.gridy = 15;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel2.add(label17, gbc);
+ }
+}
diff --git a/src/java2022spring/runNotepad.java b/src/java2022spring/runNotepad.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a76247d5e3fadb4b64cd7dbb3a75abf8b7a17f4
--- /dev/null
+++ b/src/java2022spring/runNotepad.java
@@ -0,0 +1,19 @@
+package java2022spring;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class runNotepad {
+ public static void main(String[] args) {
+ //获取当前系统UI运用于Java程序(有参考相关资料)
+ EventQueue.invokeLater(() -> {
+ try {
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException |
+ UnsupportedLookAndFeelException e) {
+ throw new RuntimeException(e);
+ }
+ new NotepadFrame();
+ });
+ }
+}
diff --git a/src/java2022spring/setFont.java b/src/java2022spring/setFont.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea99abca456dccdae9e44188eb95509a531751c2
--- /dev/null
+++ b/src/java2022spring/setFont.java
@@ -0,0 +1,186 @@
+package java2022spring;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Objects;
+
+public class setFont extends JDialog implements ActionListener {
+ String s = "AaBbCc我爱学习";
+ String[] faceString = { "正常", "粗体", "斜体", "粗斜体" };
+ String[] sizeString = { "12", "14", "16",
+ "18", "20", "22", "24", "26", "28","30","32","34", "36"};
+ JPanel panel1;
+ JButton Yes;
+ JButton Cancel;
+ JButton colour;
+ JComboBox FontName;
+ JComboBox FontStyle;
+ JComboBox FontSize;
+ JTextField jt;
+ Font font;
+ Color color;
+ int state = -1;
+
+ setFont(){
+ init();
+ setContentPane(panel1);
+ setTitle("字体");
+ setSize(400,200);
+ setLocationRelativeTo(null);
+ setModal(true);
+ setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ setVisible(true);
+ }
+ void init() {
+ //获取系统字体
+ GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
+ String[] systemFont = ge.getAvailableFontFamilyNames();
+
+ panel1 = new JPanel();
+ panel1.setLayout(new BorderLayout(0, 0));
+ final JPanel panel2 = new JPanel();
+ panel2.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+ panel1.add(panel2, BorderLayout.SOUTH);
+
+ Yes = new JButton();
+ Yes.setText("完成");
+ panel2.add(Yes);
+ Cancel = new JButton();
+ Cancel.setText("取消");
+ panel2.add(Cancel);
+ colour = new JButton();
+ colour.setText("字体颜色...");
+ panel2.add(colour);
+
+ final JPanel panel3 = new JPanel();
+ panel3.setLayout(new GridBagLayout());
+ panel1.add(panel3, BorderLayout.NORTH);
+
+ FontName = new JComboBox<>(systemFont);
+ FontName.setSelectedItem("宋体");
+ GridBagConstraints gbc;
+ gbc = new GridBagConstraints();
+ gbc.gridx = 0;
+ gbc.gridy = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ panel3.add(FontName, gbc);
+
+ FontStyle = new JComboBox<>(faceString);
+ FontStyle.setSelectedItem("正常");
+ gbc = new GridBagConstraints();
+ gbc.gridx = 2;
+ gbc.gridy = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ panel3.add(FontStyle, gbc);
+
+ final JLabel label1 = new JLabel();
+ label1.setText("字体:");
+ gbc = new GridBagConstraints();
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel3.add(label1, gbc);
+
+ final JLabel label2 = new JLabel();
+ label2.setText("字形:");
+ gbc = new GridBagConstraints();
+ gbc.gridx = 2;
+ gbc.gridy = 0;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel3.add(label2, gbc);
+
+ FontSize = new JComboBox<>(sizeString);
+ FontSize.setSelectedItem("16");
+ gbc = new GridBagConstraints();
+ gbc.gridx = 4;
+ gbc.gridy = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ panel3.add(FontSize, gbc);
+
+ final JLabel label3 = new JLabel();
+ label3.setText("大小:");
+ gbc = new GridBagConstraints();
+ gbc.gridx = 4;
+ gbc.gridy = 0;
+ gbc.anchor = GridBagConstraints.WEST;
+ panel3.add(label3, gbc);
+
+ jt = new JTextField();
+ jt.setHorizontalAlignment(0);
+ jt.setText(s);
+ jt.setFont(new Font("宋体",Font.PLAIN,16));
+ jt.setEditable(false);
+ panel1.add(jt, BorderLayout.CENTER);
+
+ //为按钮和选项注册监听器
+ Yes.addActionListener(this);
+ Cancel.addActionListener(this);
+ colour.addActionListener(this);
+ FontName.addActionListener(this);
+ FontSize.addActionListener(this);
+ FontStyle.addActionListener(this);
+
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (e.getSource()== Yes){
+ state = 1;
+ jt.repaint();
+ dispose();
+ }
+ else if(e.getSource()==Cancel){
+ state = 0;
+ jt.repaint();
+ dispose();
+ }
+ if(e.getSource() instanceof JComboBox) {
+ //获取选项
+ String name = (String)FontName.getSelectedItem();
+ int size = Integer.parseInt(Objects.requireNonNull(FontSize.getSelectedItem()).toString());
+ String style = (String)FontStyle.getSelectedItem();
+ int fontStyle = -1;
+ if (Objects.equals(style,"正常")){
+ fontStyle = Font.PLAIN;
+ }
+ else if (Objects.equals(style,"粗体")){
+ fontStyle = Font.BOLD;
+ }
+ else if (Objects.equals(style,"斜体")) {
+ fontStyle = Font.ITALIC;
+ }
+ else if (Objects.equals(style,"粗斜体")){
+ fontStyle=Font.BOLD|Font.ITALIC;
+ }
+ font = new Font(name,fontStyle,size); //储存为字体类型
+ jt.setFont(font);
+ jt.setText(s);
+ }
+ else if(e.getSource()==colour){
+ color = JColorChooser.showDialog(jt,"颜色",null);
+ jt.setForeground(color);
+ }
+ }
+
+ //获取state的值
+ public int getState() {
+ return state;
+ }
+
+ //获取字体Font
+ @Override
+ public Font getFont() {
+ return font;
+ }
+
+ //获取颜色
+ public Color getColor(){
+ return color;
+ }
+
+}