a
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
diff --git a/src/About.java b/src/About.java
new file mode 100644
index 0000000..f51676e
--- /dev/null
+++ b/src/About.java
@@ -0,0 +1,25 @@
+package src;
+
+import javax.swing.*;
+import java.awt.*;
+public class About extends JFrame {
+ public About() {
+ super("关于记事本");
+ this.setBounds(200,300,500,300);
+ this.setResizable(false);
+ this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ this.setVisible(true);
+
+ Container c = this.getContentPane();
+ c.setLayout(new GridLayout(3,0));
+
+ JLabel label1 = new JLabel("作者:å¢ä¿Šéš†");
+ JLabel label2 = new JLabel("开呿—¥æœŸ:2022å¹´5月20æ—¥");
+ JLabel label3 = new JLabel("å…责声明:部分代ç 借鉴于CSDN社区以åŠäº’è”网");
+
+ c.add(label1);
+ c.add(label2);
+ c.add(label3);
+ }
+
+}
diff --git a/src/LookHelp.java b/src/LookHelp.java
new file mode 100644
index 0000000..36345cb
--- /dev/null
+++ b/src/LookHelp.java
@@ -0,0 +1,26 @@
+package src;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class LookHelp extends JFrame {
+ public LookHelp() {
+ super("查看帮助");
+ this.setBounds(200,300,500,300);
+ this.setResizable(false);
+ this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ this.setVisible(true);
+
+ Container c = this.getContentPane();
+ c.setLayout(new GridLayout(3,0));
+
+ JLabel label1 = new JLabel("1ã€èœå•æ çš„èœå•项å¯ç‚¹å‡»æ¥é€‰æ‹©åŠŸèƒ½");
+ JLabel label2 = new JLabel("2ã€èœå•项功能å¯ç”¨å¿«æ·é”®å®žçŽ°ï¼Œå¦‚:粘贴,å¯ç”¨å¿«æ·é”®Ctrl + c");
+ JLabel label3 = new JLabel("3ã€è‡ªåЍæ¢è¡Œä»¥åŠçŠ¶æ€æ 功能默认打开,ä¸éœ€è¦çš„è¯å¯ä»¥è‡ªè¡Œå…³é—");
+
+ c.add(label1);
+ c.add(label2);
+ c.add(label3);
+ }
+
+}
diff --git a/src/Notepad.java b/src/Notepad.java
index c933928..f774d60 100644
--- a/src/Notepad.java
+++ b/src/Notepad.java
@@ -23,10 +23,11 @@ public class Notepad extends JFrame implements ActionListener{
JMenuItem undo,redo,cut,copy,paste,deleate;
//â€œæ ¼å¼â€èœå•ä¸çš„自动æ¢è¡ŒåŠŸèƒ½ï¼š
- JMenuItem auto_enter;
+// JMenuItem auto_enter;
+ JCheckBoxMenuItem auto_enter;
//“查看â€èœå•çš„çŠ¶æ€æ 功能:
- JMenuItem state;
+ JCheckBoxMenuItem state;
//“帮助â€èœå•ä¸çš„æŸ¥çœ‹å¸®åŠ©å’Œå…³äºŽè®°äº‹æœ¬åŠŸèƒ½ï¼š
JMenuItem look_help,about;
@@ -40,6 +41,9 @@ public class Notepad extends JFrame implements ActionListener{
//æ–‡æœ¬å¯¹è¯æ¡†
JFileChooser fileDialog;
+ //çŠ¶æ€æ æ ‡ç¾
+ JLabel lblStatus;
+
//缓冲æµ
BufferedReader in;
FileReader fileReader;
@@ -127,16 +131,24 @@ public class Notepad extends JFrame implements ActionListener{
});
cut = new JMenuItem("剪切(T)");
- cut.addActionListener(e -> {});
+ cut.addActionListener(e -> {
+ textArea.cut();
+ });
copy = new JMenuItem("å¤åˆ¶(C)");
- copy.addActionListener(e -> {});
+ copy.addActionListener(e -> {
+ textArea.copy();
+ });
paste = new JMenuItem("粘贴(P)");
- paste.addActionListener(e -> {});
+ paste.addActionListener(e -> {
+ textArea.paste();
+ });
deleate = new JMenuItem("åˆ é™¤(L)");
- deleate.addActionListener(e -> {});
+ deleate.addActionListener(e -> {
+ textArea.replaceSelection(null);
+ });
//æŠŠé¡¹ç›®æ·»åŠ åˆ°ç¼–è¾‘èœå•
edit.add(undo);
@@ -148,25 +160,46 @@ public class Notepad extends JFrame implements ActionListener{
edit.add(deleate);
//åˆ›å»ºæ ¼å¼èœå•项
- auto_enter = new JMenuItem("自动æ¢è¡Œ(W)");
- auto_enter.addActionListener(e -> {});
+// auto_enter = new JMenuItem("自动æ¢è¡Œ(W)");
+// auto_enter.addActionListener(e -> {});
+ JCheckBoxMenuItem auto_enter = new JCheckBoxMenuItem("自动æ¢è¡Œ(W)");
+ auto_enter.setState(true);
+ auto_enter.addActionListener(e -> {
+ boolean selected = auto_enter.isSelected();
+ if(selected) {
+ textArea.setLineWrap(true);
+ } else {
+ textArea.setLineWrap(false);
+ }
+ });
//æŠŠé¡¹ç›®æ·»åŠ åˆ°æ ¼å¼èœå•
form.add(auto_enter);
//创建查看èœå•项
- state = new JMenuItem("çŠ¶æ€æ (S)");
- state.addActionListener(e -> {});
+ state = new JCheckBoxMenuItem("çŠ¶æ€æ (S)");
+ state.setState(true);
+ state.addActionListener(e -> {
+ if(state.getState()) {
+ lblStatus.setVisible(true);
+ } else {
+ lblStatus.setVisible(false);
+ }
+ });
//æŠŠé¡¹ç›®æ·»åŠ åˆ°æŸ¥çœ‹èœå•
check.add(state);
//创建帮助èœå•项
look_help = new JMenuItem("查看帮助(H)");
- look_help.addActionListener(e -> {});
+ look_help.addActionListener(e -> {
+ new LookHelp();
+ });
about = new JMenuItem("关于记事本(A)");
- about.addActionListener(e -> {});
+ about.addActionListener(e -> {
+ new About();
+ });
//æŠŠé¡¹ç›®æ·»åŠ åˆ°å¸®åŠ©èœå•
help.add(look_help);
@@ -177,11 +210,23 @@ public class Notepad extends JFrame implements ActionListener{
//创建文本域
textArea = new JTextArea();
- textArea.setLineWrap(true); //文本自动回行
+ textArea.setWrapStyleWord(true); //设置å•è¯åœ¨ä¸€è¡Œä¸è¶³å®¹çº³æ—¶æ¢è¡Œ
+ textArea.setLineWrap(true); //文本自动回行
textArea.getDocument().addUndoableEditListener(undomg); //ä¸ºæ–‡æœ¬åŸŸæ·»åŠ ç›‘å¬å™¨
+ lblStatus = new JLabel(); //åˆ›å»ºçŠ¶æ€æ æ ‡ç¾
+ textArea.addCaretListener(e -> {
+ try {
+ int pos = textArea.getCaretPosition(); // 获å–行数
+ int lineOfC = textArea.getLineOfOffset(pos) + 1; // 获å–列数
+ int col = pos - textArea.getLineStartOffset(lineOfC - 1) + 1;
+ lblStatus.setText("第 " + lineOfC + " 行, 第 " + col + " 列");
+ } catch (Exception ex) {
+ System.out.println("å‡ºé”™äº†ï¼æ— 法获å–å…‰æ ‡ä½ç½®");
+ }});
//æ·»åŠ åˆ°æ¡†æž¶ä¸
setJMenuBar(menuBar);
+ add(lblStatus,BorderLayout.SOUTH);
add(new JScrollPane(textArea));
}
public void actionPerformed(ActionEvent e) {
--
Gitee
From b48677a157781d94649854ea11467b22ac5f607f Mon Sep 17 00:00:00 2001
From: Lu <2595498598@qq.com>
Date: Sun, 22 May 2022 21:01:08 +0800
Subject: [PATCH 08/30] =?UTF-8?q?=E2=80=9D=E7=BC=96=E8=BE=91=E2=80=9C?=
=?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=85=A8=E9=80=89?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=8F=B3?=
=?UTF-8?q?=E9=94=AE=E8=8F=9C=E5=8D=95=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B9=B6?=
=?UTF-8?q?=E5=B0=86=E5=85=B6=E4=B8=8E=E7=BC=96=E8=BE=91=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=9A=84=E4=BA=8B=E4=BB=B6=E5=93=8D=E5=BA=94?=
=?UTF-8?q?=E6=95=B4=E5=90=88=E5=88=B0=E4=BA=86=E4=B8=80=E8=B5=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/workspace.xml | 16 ++-
.../lujunlong_notepad/src/Notepad.class | Bin 10010 -> 10310 bytes
src/Notepad.java | 130 ++++++++++++------
3 files changed, 97 insertions(+), 49 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 0475e68..3b8ae43 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,9 +1,7 @@
-
-
-
+
@@ -101,7 +99,14 @@
1653131732811
-
+
+ 1653206550761
+
+
+
+ 1653206550761
+
+
@@ -120,6 +125,7 @@
-
+
+
\ No newline at end of file
diff --git a/out/production/lujunlong_notepad/src/Notepad.class b/out/production/lujunlong_notepad/src/Notepad.class
index 346cb3b045defd3f1c164e67e52675185e227176..b3d4e36f4b4842bfc7e1683a3dbe6b7f217bd7f0 100644
GIT binary patch
literal 10310
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 {
- if(undomg.canUndo()) { //撤销
- undomg.undo();
- }
- });
+ undo.addActionListener(this);
redo = new JMenuItem("æ¢å¤(R)");
- redo.addActionListener(e -> {
- if(undomg.canRedo()) { //æ¢å¤
- undomg.redo();
- }
- });
+ redo.addActionListener(this);
cut = new JMenuItem("剪切(T)");
- cut.addActionListener(e -> {
- textArea.cut();
- });
+ cut.addActionListener(this);
copy = new JMenuItem("å¤åˆ¶(C)");
- copy.addActionListener(e -> {
- textArea.copy();
- });
+ copy.addActionListener(this);
paste = new JMenuItem("粘贴(P)");
- paste.addActionListener(e -> {
- textArea.paste();
- });
+ paste.addActionListener(this);
+
+ select_all = new JMenuItem("全选(A)");
+ select_all.addActionListener(this);
deleate = new JMenuItem("åˆ é™¤(L)");
- deleate.addActionListener(e -> {
- textArea.replaceSelection(null);
- });
+ deleate.addActionListener(this);
//æŠŠé¡¹ç›®æ·»åŠ åˆ°ç¼–è¾‘èœå•
edit.add(undo);
@@ -157,6 +148,8 @@ public class Notepad extends JFrame implements ActionListener{
edit.add(cut);
edit.add(copy);
edit.add(paste);
+ edit.add(select_all);
+ edit.addSeparator(); //分割线
edit.add(deleate);
//åˆ›å»ºæ ¼å¼èœå•项
@@ -205,6 +198,35 @@ public class Notepad extends JFrame implements ActionListener{
help.add(look_help);
help.add(about);
+ // 创建å³é”®å¼¹å‡ºèœå•
+ popupMenu = new JPopupMenu();
+ popupMenu_undo = new JMenuItem("撤销(U)");
+ popupMenu_cut = new JMenuItem("剪切(T)");
+ popupMenu_copy = new JMenuItem("å¤åˆ¶(C)");
+ popupMenu_paste = new JMenuItem("粘帖(P)");
+ popupMenu_delete = new JMenuItem("åˆ é™¤(D)");
+ popupMenu_selectAll = new JMenuItem("全选(A)");
+ popupMenu_redo = new JMenuItem("æ¢å¤(R)");
+
+ //æŠŠé¡¹æ·»åŠ åˆ°å³é”®å¼¹å‡ºèœå•
+ popupMenu.add(popupMenu_undo);
+ popupMenu.add(popupMenu_redo);
+ popupMenu.addSeparator(); //分隔符
+ popupMenu.add(popupMenu_cut);
+ popupMenu.add(popupMenu_copy);
+ popupMenu.add(popupMenu_paste);
+ popupMenu.addSeparator();
+ popupMenu.add(popupMenu_delete);
+
+ // 文本编辑区注册å³é”®èœå•事件
+ popupMenu_undo.addActionListener(this);
+ popupMenu_redo.addActionListener(this);
+ popupMenu_cut.addActionListener(this);
+ popupMenu_copy.addActionListener(this);
+ popupMenu_paste.addActionListener(this);
+ popupMenu_delete.addActionListener(this);
+ popupMenu_selectAll.addActionListener(this);
+
//创建UndoManager类实例
undomg = new UndoManager();
@@ -214,6 +236,7 @@ public class Notepad extends JFrame implements ActionListener{
textArea.setLineWrap(true); //文本自动回行
textArea.getDocument().addUndoableEditListener(undomg); //ä¸ºæ–‡æœ¬åŸŸæ·»åŠ ç›‘å¬å™¨
lblStatus = new JLabel(); //åˆ›å»ºçŠ¶æ€æ æ ‡ç¾
+
textArea.addCaretListener(e -> {
try {
int pos = textArea.getCaretPosition(); // 获å–行数
@@ -224,13 +247,32 @@ public class Notepad extends JFrame implements ActionListener{
System.out.println("å‡ºé”™äº†ï¼æ— 法获å–å…‰æ ‡ä½ç½®");
}});
+ textArea.addMouseListener(new MouseAdapter() {
+ public void mousePressed(MouseEvent e) {
+ if (e.isPopupTrigger())// 返回æ¤é¼ æ ‡äº‹ä»¶æ˜¯å¦ä¸ºè¯¥å¹³å°çš„弹出èœå•触å‘事件
+ {
+ popupMenu.show(e.getComponent(), e.getX(), e.getY());// åœ¨ç»„ä»¶è°ƒç”¨è€…çš„åæ ‡ç©ºé—´ä¸çš„ä½ç½® Xã€Y 显示弹出èœå•
+ }
+ textArea.requestFocus();// 编辑区获å–焦点
+ }
+
+ public void mouseReleased(MouseEvent e) {
+ if (e.isPopupTrigger())// 返回æ¤é¼ æ ‡äº‹ä»¶æ˜¯å¦ä¸ºè¯¥å¹³å°çš„弹出èœå•触å‘事件
+ {
+ popupMenu.show(e.getComponent(), e.getX(), e.getY());// åœ¨ç»„ä»¶è°ƒç”¨è€…çš„åæ ‡ç©ºé—´ä¸çš„ä½ç½® Xã€Y 显示弹出èœå•
+ }
+ textArea.requestFocus();// 编辑区获å–焦点
+ }
+ });// 文本编辑区注册å³é”®èœå•事件结æŸ
+
//æ·»åŠ åˆ°æ¡†æž¶ä¸
setJMenuBar(menuBar);
add(lblStatus,BorderLayout.SOUTH);
add(new JScrollPane(textArea));
+
}
public void actionPerformed(ActionEvent e) {
- if(e.getSource() == save_file) {
+ if(e.getSource() == save_file || e.getSource() == save_as) {
int state = fileDialog.showSaveDialog(this);
if(state == JFileChooser.APPROVE_OPTION) {
try {
@@ -245,23 +287,7 @@ public class Notepad extends JFrame implements ActionListener{
}
catch(IOException exp) {}
}
- } else if(e.getSource() == save_as) {
- int state = fileDialog.showSaveDialog(this);
- if(state == JFileChooser.APPROVE_OPTION) {
- try {
- File dir = fileDialog.getCurrentDirectory();
- String name = fileDialog.getSelectedFile().getName();
- File file = new File(dir,name);
- fileWriter = new FileWriter(file);
- out = new BufferedWriter(fileWriter);
- out.write(textArea.getText());
- out.close();
- fileWriter.close();
- }
- catch(IOException exp) {}
- }
- }
- else if(e.getSource() == open_file) {
+ } else if(e.getSource() == open_file) {
int state = fileDialog.showOpenDialog(this);
if(state == JFileChooser.APPROVE_OPTION) {
textArea.setText(null);
@@ -280,7 +306,23 @@ public class Notepad extends JFrame implements ActionListener{
}
catch(IOException exp) {}
}
+ } else if(e.getSource() == undo || e.getSource() == popupMenu_undo) {
+ if(undomg.canUndo()) { //撤销
+ undomg.undo();
+ }
+ } else if(e.getSource() == redo || e.getSource() == popupMenu_redo) {
+ if(undomg.canRedo()) { //æ¢å¤
+ undomg.redo();
+ } } else if(e.getSource() == cut || e.getSource() == popupMenu_cut) {
+ textArea.cut();
+ } else if(e.getSource() == copy || e.getSource() == popupMenu_copy) {
+ textArea.copy();
+ } else if(e.getSource() == paste || e.getSource() == popupMenu_paste) {
+ textArea.paste();
+ } else if(e.getSource() == select_all || e.getSource() == popupMenu_selectAll) {
+ textArea.selectAll();
+ } else if(e.getSource() == deleate || e.getSource() == popupMenu_delete) {
+ textArea.replaceSelection(null);
+ }
}
}
-
-}
--
Gitee
From 3a3c66a1d727b9d04737d48f9bde2666d02a0559 Mon Sep 17 00:00:00 2001
From: Lu <2595498598@qq.com>
Date: Mon, 23 May 2022 23:42:02 +0800
Subject: [PATCH 09/30] =?UTF-8?q?=E7=BB=99=E8=8F=9C=E5=8D=95=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E4=BA=86=E5=BF=AB=E6=8D=B7=E9=94=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/workspace.xml | 15 +++++++++++----
src/Notepad.java | 15 ++++++++++-----
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 3b8ae43..83dcc99 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,9 +1,8 @@
-
+
-
@@ -106,7 +105,14 @@
1653206550761
-
+
+ 1653224468683
+
+
+
+ 1653224468683
+
+
@@ -126,6 +132,7 @@
-
+
+
\ No newline at end of file
diff --git a/src/Notepad.java b/src/Notepad.java
index db714fe..eedfe42 100644
--- a/src/Notepad.java
+++ b/src/Notepad.java
@@ -75,11 +75,16 @@ public class Notepad extends JFrame implements ActionListener{
fileDialog.setFileFilter(filter);
//创建èœå•
- file = new JMenu("文件");
- edit = new JMenu("编辑");
- form = new JMenu("æ ¼å¼");
- check = new JMenu("查看");
- help = new JMenu("帮助");
+ file = new JMenu("文件(F)");
+ file.setMnemonic('F');
+ edit = new JMenu("编辑(E)");
+ edit.setMnemonic('E');
+ form = new JMenu("æ ¼å¼(O)");
+ form.setMnemonic('O');
+ check = new JMenu("查看(V)");
+ check.setMnemonic('V');
+ help = new JMenu("帮助(H)");
+ help.setMnemonic('H');
//把èœå•æ·»åŠ åˆ°èœå•æ
menuBar.add(file);
--
Gitee
From a09cf653cd0f22a13b0e9bf8e237e94ea655c96d Mon Sep 17 00:00:00 2001
From: Lu <2595498598@qq.com>
Date: Tue, 24 May 2022 10:27:50 +0800
Subject: [PATCH 10/30] =?UTF-8?q?=E7=BB=99=E5=85=A8=E9=83=A8=E8=8F=9C?=
=?UTF-8?q?=E5=8D=95=E9=A1=B9=EF=BC=88=E9=99=A4=E4=BA=86checkboxitem?=
=?UTF-8?q?=EF=BC=89=E6=B7=BB=E5=8A=A0=E4=BA=86Alt=E5=BF=AB=E6=8D=B7?=
=?UTF-8?q?=E9=94=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/workspace.xml | 15 ++++++++--
.../lujunlong_notepad/src/Notepad.class | Bin 10310 -> 10484 bytes
src/Notepad.java | 28 +++++++++---------
3 files changed, 26 insertions(+), 17 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 83dcc99..0b04be6 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,8 +1,9 @@
-
+
+
@@ -112,7 +113,14 @@
1653224468683
-
+
+ 1653320522761
+
+
+
+ 1653320522761
+
+
@@ -133,6 +141,7 @@
-
+
+
\ No newline at end of file
diff --git a/out/production/lujunlong_notepad/src/Notepad.class b/out/production/lujunlong_notepad/src/Notepad.class
index b3d4e36f4b4842bfc7e1683a3dbe6b7f217bd7f0..ba268e15bb1011d3809ad462c7fcf6345b5e7c5b 100644
GIT binary patch
literal 10484
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
literal 10310
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