From 461170eb54e9ad0ffb1cc7808ecac52c2e85a4a7 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Thu, 3 Jun 2021 16:03:00 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95IDEA=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=88=B0Gitee?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test01/Test.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/test01/Test.java diff --git a/src/test01/Test.java b/src/test01/Test.java new file mode 100644 index 0000000..cb7215d --- /dev/null +++ b/src/test01/Test.java @@ -0,0 +1,7 @@ +package test01; + +public class Test { + public static void main(String[] args) { + System.out.println("Hello,world!"); + } +} -- Gitee From e1b615b91f9e8b365c8e2e03ab186163a41f1e46 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Thu, 3 Jun 2021 16:47:55 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95IDEA=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=88=B0Gitee?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test01/Test02.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/test01/Test02.java diff --git a/src/test01/Test02.java b/src/test01/Test02.java new file mode 100644 index 0000000..c068ed9 --- /dev/null +++ b/src/test01/Test02.java @@ -0,0 +1,7 @@ +package test01; + +public class Test02 { + public static void main(String[] args) { + System.out.println("Hello!"); + } +} -- Gitee From a26b005c60d015f5949a2d083123dd60c7bc9b48 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Thu, 3 Jun 2021 19:43:01 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test01/Test02.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test01/Test02.java b/src/test01/Test02.java index c068ed9..f5a1430 100644 --- a/src/test01/Test02.java +++ b/src/test01/Test02.java @@ -2,6 +2,6 @@ package test01; public class Test02 { public static void main(String[] args) { - System.out.println("Hello!"); + System.out.println("上传测试"); } } -- Gitee From b72f94a42a97b87c09f3faf1dadaf6d1f97b6e8e Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Thu, 3 Jun 2021 20:46:45 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E5=86=8D=E6=AC=A1=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test01/Test.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test01/Test.java b/src/test01/Test.java index cb7215d..4bba053 100644 --- a/src/test01/Test.java +++ b/src/test01/Test.java @@ -2,6 +2,6 @@ package test01; public class Test { public static void main(String[] args) { - System.out.println("Hello,world!"); + System.out.println("Hello!"); } } -- Gitee From 53cbf2d9cb86049031365e40b275c47693d1d7aa Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Sun, 6 Jun 2021 20:31:15 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E7=BB=93=E6=9E=84=E4=BB=A5=E5=8F=8A=E5=85=B6?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E8=8F=9C=E5=8D=95=E6=A0=8F=E3=80=81=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=92=8C=E8=8F=9C=E5=8D=95=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Texteditor.java | 7 +++ src/design/Window.java | 100 +++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 src/design/Texteditor.java create mode 100644 src/design/Window.java diff --git a/src/design/Texteditor.java b/src/design/Texteditor.java new file mode 100644 index 0000000..3c03ba8 --- /dev/null +++ b/src/design/Texteditor.java @@ -0,0 +1,7 @@ +package design; + +public class Texteditor { + public static void main(String[] args) { + Window win = new Window("文本编辑器",20,30,500,500); + } +} diff --git a/src/design/Window.java b/src/design/Window.java new file mode 100644 index 0000000..9e80b93 --- /dev/null +++ b/src/design/Window.java @@ -0,0 +1,100 @@ +package design; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; + +public class Window extends JFrame{ + private JMenuBar menuBar; + //菜单栏 + private JMenu menu_File,menu_Edit,menu_Format,menu_Check,menu_Help; + //菜单栏内的菜单 + private JMenuItem item_new,item_open,item_save,item_exit,item_saveas; + //file菜单的菜单项 + private JMenuItem item_backout,item_cut,item_copy,item_stick,item_delete; + //edit菜单的菜单项 + private JMenuItem item_worldformat; + //format菜单的菜单项 + private JMenuItem item_zoom,item_status; + //check菜单的菜单项 + private JMenuItem item_about,item_check; + //help菜单的菜单项 + public Window(){} + public Window(String s,int x,int y,int w,int h){ //设置窗口属性 + setTitle("文本编辑器"); + setLocation(x,y); + setSize(w,h); + setVisible(true); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + windowinit(); + } + void windowinit(){ //窗口内容的设置 + menuBar = new JMenuBar(); + menu_File = new JMenu("文件(F)"); + menu_File.setMnemonic('f'); //快捷键f+alt打开 + item_new = new JMenuItem("新建"); + item_new.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); //设置快捷键为CTRL+N + item_open = new JMenuItem("打开"); + item_open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK)); + item_save = new JMenuItem("保存"); + item_save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK)); + item_saveas = new JMenuItem("另存为"); + item_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,ActionEvent.CTRL_MASK|ActionEvent.SHIFT_MASK,true)); + item_exit = new JMenuItem("退出"); + menu_File.add(item_new); + menu_File.add(item_open); + menu_File.add(item_save); + menu_File.add(item_saveas); + menu_File.add(item_exit); + //File 菜单 + + menu_Edit = new JMenu("编辑(E)"); + menu_Edit.setMnemonic('e'); + item_backout = new JMenuItem("撤销"); + item_backout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK)); + item_cut = new JMenuItem("剪切"); + item_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); + item_copy = new JMenuItem("复制"); + item_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); + item_stick = new JMenuItem("粘贴"); + item_stick.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); + item_delete = new JMenuItem("删除"); + item_delete.setAccelerator(KeyStroke.getKeyStroke("del")); + menu_Edit.add(item_backout); + menu_Edit.add(item_cut); + menu_Edit.add(item_copy); + menu_Edit.add(item_stick); + menu_Edit.add(item_delete); + //Edit 菜单 + + menu_Format = new JMenu("格式(O)"); + menu_Format.setMnemonic('o'); + item_worldformat= new JMenuItem("字体"); + menu_Format.add(item_worldformat); + //Format 菜单 + + menu_Check = new JMenu("查看(v)"); + menu_Check.setMnemonic('v'); + item_zoom = new JMenuItem("缩放"); + item_zoom.add(new JMenuItem("放大")); + item_zoom.add(new JMenuItem("缩小")); + item_status = new JMenuItem("状态栏"); + menu_Check.add(item_zoom); + menu_Check.add(item_status); + //Check 菜单 + + menu_Help = new JMenu("帮助(H)"); + menu_Help.setMnemonic('h'); + item_check = new JMenuItem("查看帮助"); + item_about = new JMenuItem("关于文本编辑器"); + menu_Help.add(item_check); + menu_Help.add(item_about); + //Help 菜单 + menuBar.add(menu_File); + menuBar.add(menu_Edit); + menuBar.add(menu_Format); + menuBar.add(menu_Check); + menuBar.add(menu_Help); + setJMenuBar(menuBar); + } +} -- Gitee From a8ef67283d76904651d9e7d7e28735a73fd3bb82 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Sun, 6 Jun 2021 21:25:52 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E8=8F=9C=E5=8D=95=E9=A1=B9=E5=92=8C=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 61 ++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index 9e80b93..9993d15 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -7,40 +7,45 @@ import java.awt.event.KeyEvent; public class Window extends JFrame{ private JMenuBar menuBar; //菜单栏 - private JMenu menu_File,menu_Edit,menu_Format,menu_Check,menu_Help; + private JMenu menu_File,menu_Edit,menu_Format,menu_Check,menu_Help,item_zoom; //菜单栏内的菜单 private JMenuItem item_new,item_open,item_save,item_exit,item_saveas; //file菜单的菜单项 private JMenuItem item_backout,item_cut,item_copy,item_stick,item_delete; //edit菜单的菜单项 - private JMenuItem item_worldformat; + private JMenuItem item_worldformat,item_changeline; //format菜单的菜单项 - private JMenuItem item_zoom,item_status; + private JMenuItem item_status,a,b; //check菜单的菜单项 private JMenuItem item_about,item_check; //help菜单的菜单项 public Window(){} public Window(String s,int x,int y,int w,int h){ //设置窗口属性 + windowinit(); setTitle("文本编辑器"); setLocation(x,y); setSize(w,h); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); - windowinit(); } void windowinit(){ //窗口内容的设置 menuBar = new JMenuBar(); menu_File = new JMenu("文件(F)"); menu_File.setMnemonic('f'); //快捷键f+alt打开 - item_new = new JMenuItem("新建"); + item_new = new JMenuItem("新建(N)"); + item_new.setMnemonic('n'); item_new.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); //设置快捷键为CTRL+N - item_open = new JMenuItem("打开"); + item_open = new JMenuItem("打开(O)"); + item_open.setMnemonic('o'); item_open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK)); - item_save = new JMenuItem("保存"); + item_save = new JMenuItem("保存(S)"); + item_save.setMnemonic('s'); item_save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK)); - item_saveas = new JMenuItem("另存为"); + item_saveas = new JMenuItem("另存为(A)"); + item_saveas.setMnemonic('a'); item_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,ActionEvent.CTRL_MASK|ActionEvent.SHIFT_MASK,true)); - item_exit = new JMenuItem("退出"); + item_exit = new JMenuItem("退出(X)"); + item_exit.setMnemonic('x'); menu_File.add(item_new); menu_File.add(item_open); menu_File.add(item_save); @@ -50,16 +55,21 @@ public class Window extends JFrame{ menu_Edit = new JMenu("编辑(E)"); menu_Edit.setMnemonic('e'); - item_backout = new JMenuItem("撤销"); + item_backout = new JMenuItem("撤销(U)"); + item_backout.setMnemonic('u'); item_backout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK)); - item_cut = new JMenuItem("剪切"); + item_cut = new JMenuItem("剪切(T)"); + item_cut.setMnemonic('t'); item_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); - item_copy = new JMenuItem("复制"); + item_copy = new JMenuItem("复制(C)"); + item_copy.setMnemonic('c'); item_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); - item_stick = new JMenuItem("粘贴"); + item_stick = new JMenuItem("粘贴(P)"); + item_stick.setMnemonic('p'); item_stick.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); - item_delete = new JMenuItem("删除"); - item_delete.setAccelerator(KeyStroke.getKeyStroke("del")); + item_delete = new JMenuItem("删除(L)"); + item_delete.setMnemonic('l'); + item_delete.setAccelerator(KeyStroke.getKeyStroke("Del")); menu_Edit.add(item_backout); menu_Edit.add(item_cut); menu_Edit.add(item_copy); @@ -69,16 +79,26 @@ public class Window extends JFrame{ menu_Format = new JMenu("格式(O)"); menu_Format.setMnemonic('o'); - item_worldformat= new JMenuItem("字体"); + item_worldformat= new JMenuItem("字体(F)"); + item_worldformat.setMnemonic('f'); + item_changeline= new JMenuItem("自动换行(W)"); + item_changeline.setMnemonic('w'); menu_Format.add(item_worldformat); + menu_Format.add(item_changeline); //Format 菜单 menu_Check = new JMenu("查看(v)"); menu_Check.setMnemonic('v'); - item_zoom = new JMenuItem("缩放"); - item_zoom.add(new JMenuItem("放大")); - item_zoom.add(new JMenuItem("缩小")); - item_status = new JMenuItem("状态栏"); + item_zoom = new JMenu("缩放(Z)"); + item_zoom.setMnemonic('Z'); + a=new JMenuItem("放大(I)"); + item_zoom.add(a); + item_zoom.setMnemonic('i'); + b=new JMenuItem("缩小(O)"); + item_zoom.add(b); + item_zoom.setMnemonic('o'); + item_status = new JMenuItem("状态栏(S)"); + item_status.setMnemonic('s'); menu_Check.add(item_zoom); menu_Check.add(item_status); //Check 菜单 @@ -90,6 +110,7 @@ public class Window extends JFrame{ menu_Help.add(item_check); menu_Help.add(item_about); //Help 菜单 + menuBar.add(menu_File); menuBar.add(menu_Edit); menuBar.add(menu_Format); -- Gitee From 117b1a302d3172302886aa6ce05efbcf5cf7dc97 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Sun, 6 Jun 2021 23:57:37 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E5=8C=BA=E5=9F=9F=EF=BC=8C=E5=B9=B6=E6=94=BE=E5=88=B0?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8=E7=AA=97=E6=A0=BC=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 57 +++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index 9993d15..4b21b4a 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -6,9 +6,9 @@ import java.awt.event.KeyEvent; public class Window extends JFrame{ private JMenuBar menuBar; - //菜单栏 + //菜单条 private JMenu menu_File,menu_Edit,menu_Format,menu_Check,menu_Help,item_zoom; - //菜单栏内的菜单 + //菜单条内的菜单 private JMenuItem item_new,item_open,item_save,item_exit,item_saveas; //file菜单的菜单项 private JMenuItem item_backout,item_cut,item_copy,item_stick,item_delete; @@ -19,16 +19,21 @@ public class Window extends JFrame{ //check菜单的菜单项 private JMenuItem item_about,item_check; //help菜单的菜单项 - public Window(){} + private static JTextArea area; + //编辑区域 + private JScrollPane scroll_bar; + //滚动窗格,在其中添加area可变为一个可以滚动的文本框,JScrollPane同时可以设置方向 + public Window(String s,int x,int y,int w,int h){ //设置窗口属性 windowinit(); - setTitle("文本编辑器"); - setLocation(x,y); - setSize(w,h); - setVisible(true); - setDefaultCloseOperation(DISPOSE_ON_CLOSE); + initEditArea(); + this.setTitle("文本编辑器"); + this.setLocation(x,y); + this.setSize(w,h); + this.setVisible(true); + this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); } - void windowinit(){ //窗口内容的设置 + void windowinit() { //窗口内容的设置 menuBar = new JMenuBar(); menu_File = new JMenu("文件(F)"); menu_File.setMnemonic('f'); //快捷键f+alt打开 @@ -37,16 +42,16 @@ public class Window extends JFrame{ item_new.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); //设置快捷键为CTRL+N item_open = new JMenuItem("打开(O)"); item_open.setMnemonic('o'); - item_open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK)); + item_open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); item_save = new JMenuItem("保存(S)"); item_save.setMnemonic('s'); - item_save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK)); + item_save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); item_saveas = new JMenuItem("另存为(A)"); item_saveas.setMnemonic('a'); - item_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,ActionEvent.CTRL_MASK|ActionEvent.SHIFT_MASK,true)); + item_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK, true)); item_exit = new JMenuItem("退出(X)"); item_exit.setMnemonic('x'); - menu_File.add(item_new); + menu_File.add(item_new); //将菜单项添加至菜单 menu_File.add(item_open); menu_File.add(item_save); menu_File.add(item_saveas); @@ -70,7 +75,7 @@ public class Window extends JFrame{ item_delete = new JMenuItem("删除(L)"); item_delete.setMnemonic('l'); item_delete.setAccelerator(KeyStroke.getKeyStroke("Del")); - menu_Edit.add(item_backout); + menu_Edit.add(item_backout); //将菜单项添加至菜单 menu_Edit.add(item_cut); menu_Edit.add(item_copy); menu_Edit.add(item_stick); @@ -79,11 +84,11 @@ public class Window extends JFrame{ menu_Format = new JMenu("格式(O)"); menu_Format.setMnemonic('o'); - item_worldformat= new JMenuItem("字体(F)"); + item_worldformat = new JMenuItem("字体(F)"); item_worldformat.setMnemonic('f'); - item_changeline= new JMenuItem("自动换行(W)"); + item_changeline = new JMenuItem("自动换行(W)"); item_changeline.setMnemonic('w'); - menu_Format.add(item_worldformat); + menu_Format.add(item_worldformat); //将菜单项添加至菜单 menu_Format.add(item_changeline); //Format 菜单 @@ -91,15 +96,15 @@ public class Window extends JFrame{ menu_Check.setMnemonic('v'); item_zoom = new JMenu("缩放(Z)"); item_zoom.setMnemonic('Z'); - a=new JMenuItem("放大(I)"); + a = new JMenuItem("放大(I)"); item_zoom.add(a); item_zoom.setMnemonic('i'); - b=new JMenuItem("缩小(O)"); + b = new JMenuItem("缩小(O)"); item_zoom.add(b); item_zoom.setMnemonic('o'); item_status = new JMenuItem("状态栏(S)"); item_status.setMnemonic('s'); - menu_Check.add(item_zoom); + menu_Check.add(item_zoom); //将菜单项添加至菜单 menu_Check.add(item_status); //Check 菜单 @@ -107,15 +112,21 @@ public class Window extends JFrame{ menu_Help.setMnemonic('h'); item_check = new JMenuItem("查看帮助"); item_about = new JMenuItem("关于文本编辑器"); - menu_Help.add(item_check); + menu_Help.add(item_check); //将菜单项添加至菜单 menu_Help.add(item_about); //Help 菜单 - menuBar.add(menu_File); + menuBar.add(menu_File); //将菜单添加至菜单条 menuBar.add(menu_Edit); menuBar.add(menu_Format); menuBar.add(menu_Check); menuBar.add(menu_Help); - setJMenuBar(menuBar); + setJMenuBar(menuBar); //将菜单条放置到窗口中 } + void initEditArea(){ //创建文本区域,添加滚动窗格 + area = new JTextArea(); + scroll_bar = new JScrollPane(area); //将文本区域组件放入滚动窗格中,形成滚动文本框 + scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置水平滚动 + add(scroll_bar); + } } -- Gitee From 7e5429c292a65cc9010a0ae93ec69b4b57b18342 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Mon, 7 Jun 2021 11:23:47 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=B9=B6=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=20=E5=B8=AE=E5=8A=A9-=E5=85=B3=E4=BA=8E=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8=20=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/About_Window.java | 45 +++++++++++++++++++++++++++++++++++ src/design/texteditor.png | Bin 0 -> 6434 bytes 2 files changed, 45 insertions(+) create mode 100644 src/design/About_Window.java create mode 100644 src/design/texteditor.png diff --git a/src/design/About_Window.java b/src/design/About_Window.java new file mode 100644 index 0000000..1f6eb55 --- /dev/null +++ b/src/design/About_Window.java @@ -0,0 +1,45 @@ +package design; + +import javax.swing.*; +import java.awt.*; + +public class About_Window extends JFrame { + private JButton button_ok; + private JLabel about_label; + private JPanel panel ; + private Image image; + /** + * 关于文本编辑器的窗口的构造函数 + */ + public About_Window() { //设置点击帮助-关于文本编辑器后弹出的窗口 + this.setSize(400,400); + this.setTitle("关于文本编辑器"); + this.setVisible(true); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.setImage(); + + panel = new JPanel(); + about_label = new JLabel(); + button_ok = new JButton("OK"); + panel.setLayout(null); + about_label.setBounds(50,-70,200,300); + button_ok.setBounds(270,200,70,35); + about_label.setText("文本编辑器
版本号:2021-6-10
制作者:KYoungZ"); //设置标签about_label内容 + + //添加标签、按钮、面板 + panel.add(about_label); + panel.add(button_ok); + this.add(panel); + + button_ok.addActionListener(e->{ + this.dispose(); + }); + } + //设置窗体图标 + private void setImage(){ + ImageIcon imageIcon = new ImageIcon("D:\\IDEA\\IntelliJ IDEA Community Edition 2020.3.2\\" + + "Hello\\src\\design\\texteditor.png"); + image = imageIcon.getImage(); + setIconImage(image); + } +} diff --git a/src/design/texteditor.png b/src/design/texteditor.png new file mode 100644 index 0000000000000000000000000000000000000000..284a3c4aa2dc7cb623ef42960dd5b30614ca6192 GIT binary patch literal 6434 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 literal 0 HcmV?d00001 -- Gitee From 99112d166e8d1738b530c73b9640f0e4e5351142 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Tue, 8 Jun 2021 01:02:12 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=20=E6=A0=BC=E5=BC=8F-?= =?UTF-8?q?=E5=AD=97=E4=BD=93=20=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Format_Window.java | 156 ++++++++++++++++++++++++++++++++++ src/design/Window.java | 65 +++++++++++--- 2 files changed, 211 insertions(+), 10 deletions(-) create mode 100644 src/design/Format_Window.java diff --git a/src/design/Format_Window.java b/src/design/Format_Window.java new file mode 100644 index 0000000..c81ae0f --- /dev/null +++ b/src/design/Format_Window.java @@ -0,0 +1,156 @@ +package design; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +public class Format_Window extends JFrame { + private JComboBox word_style; + private JComboBox word_size; + private JComboBox word_pattern; + private JPanel paneNorth; //装下拉列表的面板容器,位置为BoderLayout布局中的”北“区域 + private JPanel paneCenter; //装字体展示文本框的面板容器,位置为BoderLayout布局中的”中“区域 + private JPanel paneSouth; //装按钮的面板容器,位置为BoderLayout布局中的”南“区域 + private JTextField showText; //字体展示文本框 + + private Font selectedFont; + private String selectedPattern = "宋体"; + private int selectedSize = 72; + private int selectedStyle = Font.PLAIN; + + private JButton button_ok; //"确定"按钮 + private JButton button_cancel; //"取消"按钮 + GraphicsEnvironment e=GraphicsEnvironment.getLocalGraphicsEnvironment(); + private String[] pattern = e.getAvailableFontFamilyNames(); + private Integer[] size = {8,10,12,14,16,18,20,22,24,26,28,30,32,36,48,72}; + private String[] style = {"常规", "斜体", "粗体","粗斜体"}; + + public Format_Window() { + initBox(); + initText(); + initButton(); + initFormat(); + initListener(); + + this.setSize(550, 200); + this.setTitle("文字格式"); + this.setVisible(true); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + } + + /* + * 初始化布局 + * 将每个组件按照一定的布局排在窗口中 + */ + private void initFormat() { + paneNorth = new JPanel(); + paneNorth.add(new JLabel("字体:")); + paneNorth.add(word_pattern); + paneNorth.add(new JLabel("字号:")); + paneNorth.add(word_size); + paneNorth.add(new JLabel("字形:")); + paneNorth.add(word_style); + this.add(paneNorth, BorderLayout.NORTH); + + paneCenter = new JPanel(); + paneCenter.add(showText); + this.add(paneCenter, BorderLayout.CENTER); + + paneSouth = new JPanel(); + paneSouth.add(button_ok); + paneSouth.add(button_cancel); + this.add(paneSouth, BorderLayout.SOUTH); + + } + + + + + //对ComboBox添加监听器 + private void initListener() { + //字体 + word_pattern.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + if (e.getStateChange()==ItemEvent.SELECTED) { + showText.setFont(new Font((String) word_pattern.getSelectedItem(), showText.getFont().getStyle(), showText.getFont().getSize())); + } + } + } + }); + //字体大小 + word_size.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + showText.setFont(new Font(showText.getFont().getName(), showText.getFont().getStyle(), (int) word_size.getSelectedItem())); + } + } + }); + //字型 + word_style.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + if (word_style.getSelectedItem().equals("常规")) { + showText.setFont(new Font(showText.getFont().getName(), Font.PLAIN, showText.getFont().getSize())); + } else if (word_style.getSelectedItem().equals("粗体")) { + showText.setFont(new Font(showText.getFont().getName(), Font.BOLD, showText.getFont().getSize())); + } else if (word_style.getSelectedItem().equals("斜体")) { + showText.setFont(new Font(showText.getFont().getName(), Font.ITALIC, showText.getFont().getSize())); + } else if (word_style.getSelectedItem().equals("粗斜体")) { + showText.setFont(new Font(showText.getFont().getName(), Font.BOLD + Font.ITALIC, showText.getFont().getSize())); + } + } + } + }); + //确定按钮 + button_ok.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Window.getEdit_text_area().setFont(showText.getFont()); + dispose(); + } + }); + //取消按钮 + button_cancel.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + dispose(); + } + }); + } + /* + * 初始化comboBox + * 把相应的选项加入 + */ + public void initBox() { + word_style = new JComboBox(style); + word_size = new JComboBox(size); + word_pattern = new JComboBox(pattern); + word_size.setSelectedItem(Window.getEdit_text_area().getFont().getSize()); + word_pattern.setSelectedItem(Window.getEdit_text_area().getFont().getName()); + word_style.setSelectedIndex(Window.getEdit_text_area().getFont().getStyle()); + } + + //初始化展示字体区域 + public void initText() { + selectedFont = new Font(selectedPattern,selectedStyle,selectedSize); + showText = new JTextField("字体展示"); + showText.setFont(selectedFont); + showText.setEditable(false); + showText.setSize(160,100); + } + + + //初始化"确定”和“取消”两个按钮 + private void initButton() { + button_ok = new JButton("确定"); + button_cancel = new JButton("取消"); + } +} diff --git a/src/design/Window.java b/src/design/Window.java index 4b21b4a..b67cd3e 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -2,9 +2,10 @@ package design; import javax.swing.*; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.KeyEvent; -public class Window extends JFrame{ +public class Window extends JFrame implements ActionListener { private JMenuBar menuBar; //菜单条 private JMenu menu_File,menu_Edit,menu_Format,menu_Check,menu_Help,item_zoom; @@ -13,7 +14,7 @@ public class Window extends JFrame{ //file菜单的菜单项 private JMenuItem item_backout,item_cut,item_copy,item_stick,item_delete; //edit菜单的菜单项 - private JMenuItem item_worldformat,item_changeline; + private JMenuItem item_wordformat,item_changeline; //format菜单的菜单项 private JMenuItem item_status,a,b; //check菜单的菜单项 @@ -22,11 +23,12 @@ public class Window extends JFrame{ private static JTextArea area; //编辑区域 private JScrollPane scroll_bar; - //滚动窗格,在其中添加area可变为一个可以滚动的文本框,JScrollPane同时可以设置方向 + //滚动窗格,在其中添加area可变为一个可以滚动的文本框 public Window(String s,int x,int y,int w,int h){ //设置窗口属性 windowinit(); initEditArea(); + initListener(); this.setTitle("文本编辑器"); this.setLocation(x,y); this.setSize(w,h); @@ -84,11 +86,11 @@ public class Window extends JFrame{ menu_Format = new JMenu("格式(O)"); menu_Format.setMnemonic('o'); - item_worldformat = new JMenuItem("字体(F)"); - item_worldformat.setMnemonic('f'); + item_wordformat = new JMenuItem("字体(F)"); + item_wordformat.setMnemonic('f'); item_changeline = new JMenuItem("自动换行(W)"); item_changeline.setMnemonic('w'); - menu_Format.add(item_worldformat); //将菜单项添加至菜单 + menu_Format.add(item_wordformat); //将菜单项添加至菜单 menu_Format.add(item_changeline); //Format 菜单 @@ -121,12 +123,55 @@ public class Window extends JFrame{ menuBar.add(menu_Format); menuBar.add(menu_Check); menuBar.add(menu_Help); - setJMenuBar(menuBar); //将菜单条放置到窗口中 + this.setJMenuBar(menuBar); //将菜单条放置到窗口中 } + /* + * 初始化编辑区域 + * 用scrollpane装textarea + * 同时对pane设置方向 + */ void initEditArea(){ //创建文本区域,添加滚动窗格 area = new JTextArea(); scroll_bar = new JScrollPane(area); //将文本区域组件放入滚动窗格中,形成滚动文本框 - scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置水平滚动 - add(scroll_bar); + scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置滚动方向 + this.add(scroll_bar); } -} + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getSource() == item_about) { + new About_Window(); + } + if (e.getSource() == item_wordformat) { + new Format_Window(); + } + } + + public static JTextArea getEdit_text_area() { //获得文本内容 + return area; + } + + /* + * 对所有菜单项统一设置监听器 + */ + public void initListener() { + item_new.addActionListener(this); + item_open.addActionListener(this); + item_save.addActionListener(this); + item_saveas.addActionListener(this); + item_exit.addActionListener(this); + item_backout.addActionListener(this); + item_cut.addActionListener(this); + item_copy.addActionListener(this); + item_stick.addActionListener(this); + item_delete.addActionListener(this); + item_wordformat.addActionListener(this); + item_changeline.addActionListener(this); + item_zoom.addActionListener(this); + a.addActionListener(this); + b.addActionListener(this); + item_status.addActionListener(this); + item_check.addActionListener(this); + item_about.addActionListener(this); + } +} \ No newline at end of file -- Gitee From aeff741d9d23ceda936fc31b9773e9bd952b7556 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Tue, 8 Jun 2021 03:20:46 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=20=E6=96=87=E4=BB=B6-?= =?UTF-8?q?=E6=96=B0=E5=BB=BA/=E6=89=93=E5=BC=80/=E4=BF=9D=E5=AD=98/?= =?UTF-8?q?=E5=8F=A6=E5=AD=98=E4=B8=BA/=E9=80=80=E5=87=BA=20=E7=AD=89?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E5=92=8C=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 258 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 235 insertions(+), 23 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index b67cd3e..7af4956 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -1,40 +1,46 @@ package design; import javax.swing.*; +import javax.swing.filechooser.FileNameExtensionFilter; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; +import java.io.*; public class Window extends JFrame implements ActionListener { private JMenuBar menuBar; //菜单条 - private JMenu menu_File,menu_Edit,menu_Format,menu_Check,menu_Help,item_zoom; + private JMenu menu_File, menu_Edit, menu_Format, menu_Check, menu_Help, item_zoom; //菜单条内的菜单 - private JMenuItem item_new,item_open,item_save,item_exit,item_saveas; + private JMenuItem item_new, item_open, item_save, item_exit, item_saveas; //file菜单的菜单项 - private JMenuItem item_backout,item_cut,item_copy,item_stick,item_delete; + private JMenuItem item_backout, item_cut, item_copy, item_stick, item_delete; //edit菜单的菜单项 - private JMenuItem item_wordformat,item_changeline; + private JMenuItem item_wordformat, item_changeline; //format菜单的菜单项 - private JMenuItem item_status,a,b; + private JMenuItem item_status, a, b; //check菜单的菜单项 - private JMenuItem item_about,item_check; + private JMenuItem item_about, item_check; //help菜单的菜单项 - private static JTextArea area; + public static JTextArea area; //编辑区域 private JScrollPane scroll_bar; //滚动窗格,在其中添加area可变为一个可以滚动的文本框 - - public Window(String s,int x,int y,int w,int h){ //设置窗口属性 + public File file;// 打开和保存共同的成员变量 + public boolean changed;// 用作关闭时判断文件是否变化 + public Window(){} + public Window(String s, int x, int y, int w, int h) { //设置窗口属性 windowinit(); initEditArea(); initListener(); this.setTitle("文本编辑器"); - this.setLocation(x,y); - this.setSize(w,h); + this.setLocation(x, y); + this.setSize(w, h); this.setVisible(true); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); } + void windowinit() { //窗口内容的设置 menuBar = new JMenuBar(); menu_File = new JMenu("文件(F)"); @@ -125,17 +131,18 @@ public class Window extends JFrame implements ActionListener { menuBar.add(menu_Help); this.setJMenuBar(menuBar); //将菜单条放置到窗口中 } + /* * 初始化编辑区域 * 用scrollpane装textarea * 同时对pane设置方向 */ - void initEditArea(){ //创建文本区域,添加滚动窗格 - area = new JTextArea(); - scroll_bar = new JScrollPane(area); //将文本区域组件放入滚动窗格中,形成滚动文本框 - scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置滚动方向 - this.add(scroll_bar); - } + void initEditArea() { //创建文本区域,添加滚动窗格 + area = new JTextArea(); + scroll_bar = new JScrollPane(area); //将文本区域组件放入滚动窗格中,形成滚动文本框 + scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //设置滚动方向 + this.add(scroll_bar); + } @Override public void actionPerformed(ActionEvent e) { @@ -155,23 +162,228 @@ public class Window extends JFrame implements ActionListener { * 对所有菜单项统一设置监听器 */ public void initListener() { - item_new.addActionListener(this); - item_open.addActionListener(this); - item_save.addActionListener(this); - item_saveas.addActionListener(this); - item_exit.addActionListener(this); + item_new.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_new_ActionListener(e); + } + }); + + item_open.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_open_ActionListener(e); + } + }); + + item_save.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + item_save_ActionListener(e); + } + }); + + item_saveas.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + item_saveas_ActionListener(e); + } + }); + item_exit.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_exit_ActionListener(e); + } + }); + item_backout.addActionListener(this); + item_cut.addActionListener(this); + item_copy.addActionListener(this); + item_stick.addActionListener(this); + item_delete.addActionListener(this); + item_wordformat.addActionListener(this); + item_changeline.addActionListener(this); + item_zoom.addActionListener(this); + a.addActionListener(this); + b.addActionListener(this); item_status.addActionListener(this); + item_check.addActionListener(this); + item_about.addActionListener(this); + + } + + private void item_new_ActionListener(ActionEvent e) { //新建按钮监听 + + this.file = null; + changed = false; + String text = area.getText();// 获取文本内容 + if (text.isEmpty()) {// 如果文本为空 + setTitle("无标题-记事本"); + area.setText("");// 清空文本域 + } else { + Object[] options = {"保存(S)", "不保存(N)", "取消"}; // 自定义按钮上的文字 + int m = JOptionPane.showOptionDialog(this, "你想将更改保存到 无标题 吗?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, null, options, options[0]); + if (m == JOptionPane.YES_OPTION) { // 点击保存 + Save();// 调用保存的方法 + setTitle("无标题-记事本"); + area.setText("");// 清空文本域 + } else if (m == JOptionPane.NO_OPTION) {// 点击不保存 + setTitle("无标题-记事本"); + area.setText("");// 清空文本域 + } + } + + } + + private void item_open_ActionListener(ActionEvent e) { //打开按钮监听 + String text = area.getText();// 获取文本内容 + changed = false; + if (text.isEmpty()) {// 如果文本为空,那么直接打开文件选择器 + Open(); + + } else { + Object[] options = {"保存(S)", "不保存(N)", "取消"}; // 自定义按钮上的文字 + int m = JOptionPane.showOptionDialog(this, "你想将更改保存到 无标题 吗?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, null, options, options[0]); + if (m == JOptionPane.YES_OPTION || m == JOptionPane.NO_OPTION) {// 判断是否打开文件 + if (m == JOptionPane.YES_OPTION) { + Save();// 调用保存文本的方法 + } + Open();// 调用打开文件的方法 + } + } + } + + private void item_save_ActionListener(ActionEvent e) { //保存按钮监听 + String text = area.getText();// 获取文本域的内容 + changed = false; + if (this.file != null) {// 判断文件是否存在,如果已经存在直接保存 + BufferedWriter bw = null; + try { + bw = new BufferedWriter(new FileWriter(file));// 创建文件的缓存输出流 + bw.write(text);// 把文本保存导文件 + bw.flush(); + } catch (IOException e1) { + e1.printStackTrace(); + } finally { + try { + bw.close();// 关闭流 + } catch (IOException e1) { + // TODO 自动生成的 catch 块 + e1.printStackTrace(); + } + } + } else {// 文件不存在,打开文件选择器进行保存 + Save(); + } + } + protected void item_saveas_ActionListener(ActionEvent e) {// 另存为按钮监听 + changed = false; + FileDialog fd = new FileDialog(this, "另存为", FileDialog.SAVE);// 创建文件保存对话框 + fd.setFile(this.getTitle() + ".txt"); + fd.setVisible(true);// 显示对话框 + String text = area.getText();// 获取文本内容 + String parent = fd.getDirectory();// 获得父路径 + String child = fd.getFile();// 获得文件名 + if (parent != null && child != null) {// 判断是否要保存,或者取消 + File f = new File(parent, child);// 创建一个文件对象 + PrintStream ps = null;// 打印流 + try { + ps = new PrintStream(f); + ps.write(text.getBytes()); + ps.flush(); + } catch (FileNotFoundException e1) { + // TODO 自动生成的 catch 块 + e1.printStackTrace(); + } catch (IOException e1) { + // TODO 自动生成的 catch 块 + e1.printStackTrace(); + } finally { + if (ps != null) { + ps.close(); + } + } + } + } + + private void item_exit_ActionListener(ActionEvent e){ //退出按钮监听 + dispose();// 销毁窗体 + } + + private void Save() { // 保存文件的方法 + String text = area.getText();// 获取文本域的内容 + if (text.isEmpty()) {// 如果为空 + /* + * 只要是对话框,尽量不要学null,指定父体 这样在完成对话框之前是不允许操作主窗体的 + */ + JOptionPane.showMessageDialog(this, "没有需要保存的文本"); + return; + } else { + JFileChooser filechooser = new JFileChooser();// 创建文件选择框 + int option = filechooser.showSaveDialog(this);// 打开文件选择框 + if (option == filechooser.APPROVE_OPTION) {// 判断用户单击是否为打开按钮 + File file = filechooser.getSelectedFile();// 获取用户选择的文件 + BufferedWriter bw = null; + try { + bw = new BufferedWriter(new FileWriter(file));// 创建文件的缓存输出流 + bw.write(text);// 把文本保存导文件 + bw.flush(); + } catch (IOException e1) { + e1.printStackTrace(); + } finally { + try { + bw.close();// 关闭流 + } catch (IOException e1) { + // TODO 自动生成的 catch 块 + e1.printStackTrace(); + } + } + } + } } -} \ No newline at end of file + + private void Open() { // 打开文件的方法 + JFileChooser filechooser = new JFileChooser();// 创建一个文件选择器 + filechooser.setFileFilter(new FileNameExtensionFilter("文本文档(*.txt)", "txt"));// 设置文件过滤器 + int i = filechooser.showOpenDialog(this);// 显示对话框 + if (i == filechooser.APPROVE_OPTION) {// 如果点击了打开按钮 + this.file = filechooser.getSelectedFile();// 获取选中的文件 + this.setTitle(this.file.getName());// 设置标题 + BufferedReader br = null;// 声明缓存输入流 + try { + br = new BufferedReader(new FileReader(this.file));// 创建文件的输入流 + String str = null; + area.setText("");// 清空文本 + while ((str = br.readLine()) != null) { + area.append(str + "\n");// 追加写入到文本中 + } + + } catch (IOException e1) { + e1.printStackTrace(); + } finally { + if (br != null) { + try { + br.close();// 关闭流 + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + } + } +} + + + + + -- Gitee From 67b2a10540c6fbd5fcbd61f080a1806732a25a71 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Tue, 8 Jun 2021 14:34:06 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B9=B6=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BA=86=E8=8F=9C=E5=8D=95=E6=96=87=E4=BB=B6=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=20=E6=96=B0=E7=AA=97=E5=8F=A3=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=A1=B9=EF=BC=8C=E8=AE=BE=E7=BD=AE=E4=BA=86=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=B8=AD=E7=9A=84=E5=87=A0=E4=B8=AA=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E9=A1=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=87=A0?= =?UTF-8?q?=E4=B8=AA=E7=AA=97=E5=8F=A3=E7=9A=84=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 120 +++++++++++++++++++++++++++----- src/design/about_texteditor.png | Bin 0 -> 1193 bytes src/design/font.png | Bin 0 -> 6434 bytes 3 files changed, 102 insertions(+), 18 deletions(-) create mode 100644 src/design/about_texteditor.png create mode 100644 src/design/font.png diff --git a/src/design/Window.java b/src/design/Window.java index 7af4956..6b7089f 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -2,6 +2,7 @@ package design; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.undo.UndoManager; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -13,9 +14,9 @@ public class Window extends JFrame implements ActionListener { //菜单条 private JMenu menu_File, menu_Edit, menu_Format, menu_Check, menu_Help, item_zoom; //菜单条内的菜单 - private JMenuItem item_new, item_open, item_save, item_exit, item_saveas; + private JMenuItem item_new, item_new_window,item_open, item_save, item_exit, item_saveas; //file菜单的菜单项 - private JMenuItem item_backout, item_cut, item_copy, item_stick, item_delete; + private JMenuItem item_backout, item_cut, item_copy, item_stick, item_delete,item_all; //edit菜单的菜单项 private JMenuItem item_wordformat, item_changeline; //format菜单的菜单项 @@ -23,21 +24,25 @@ public class Window extends JFrame implements ActionListener { //check菜单的菜单项 private JMenuItem item_about, item_check; //help菜单的菜单项 - public static JTextArea area; + private static JTextArea area; //编辑区域 private JScrollPane scroll_bar; //滚动窗格,在其中添加area可变为一个可以滚动的文本框 - public File file;// 打开和保存共同的成员变量 - public boolean changed;// 用作关闭时判断文件是否变化 - public Window(){} - public Window(String s, int x, int y, int w, int h) { //设置窗口属性 + private File file; + //打开和保存共同的成员变量 + private boolean changed; + //用作关闭时判断文件是否变化 + private UndoManager manager; + //撤销操作管理对象 + private Image image; + //文本编辑器主的图标 + public Window(String s,int x,int y,int w,int h) { //设置窗口属性 windowinit(); initEditArea(); initListener(); - this.setTitle("文本编辑器"); - this.setLocation(x, y); - this.setSize(w, h); - this.setVisible(true); + setImage(); + setSize(w,h); + setLocation(x,y); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); } @@ -48,6 +53,9 @@ public class Window extends JFrame implements ActionListener { item_new = new JMenuItem("新建(N)"); item_new.setMnemonic('n'); item_new.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); //设置快捷键为CTRL+N + item_new_window = new JMenuItem("新窗口(W)"); + item_new.setMnemonic('w'); + item_new.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK, true)); item_open = new JMenuItem("打开(O)"); item_open.setMnemonic('o'); item_open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); @@ -60,6 +68,7 @@ public class Window extends JFrame implements ActionListener { item_exit = new JMenuItem("退出(X)"); item_exit.setMnemonic('x'); menu_File.add(item_new); //将菜单项添加至菜单 + menu_File.add(item_new_window); menu_File.add(item_open); menu_File.add(item_save); menu_File.add(item_saveas); @@ -82,12 +91,16 @@ public class Window extends JFrame implements ActionListener { item_stick.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); item_delete = new JMenuItem("删除(L)"); item_delete.setMnemonic('l'); - item_delete.setAccelerator(KeyStroke.getKeyStroke("Del")); + item_delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK)); + item_all = new JMenuItem("全选(A)"); + item_all.setMnemonic('a'); + item_all.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); menu_Edit.add(item_backout); //将菜单项添加至菜单 menu_Edit.add(item_cut); menu_Edit.add(item_copy); menu_Edit.add(item_stick); menu_Edit.add(item_delete); + menu_Edit.add(item_all); //Edit 菜单 menu_Format = new JMenu("格式(O)"); @@ -168,7 +181,12 @@ public class Window extends JFrame implements ActionListener { item_new_ActionListener(e); } }); + item_new_window.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + item_new_window_ActionListener(e); + } + }); item_open.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -194,16 +212,44 @@ public class Window extends JFrame implements ActionListener { } }); - item_backout.addActionListener(this); + item_backout.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_backout_ActionListener(e); + } + }); + item_cut.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_cut_ActionListener(e); + } + }); - item_cut.addActionListener(this); + item_copy.addActionListener(new ActionListener() { - item_copy.addActionListener(this); + public void actionPerformed(ActionEvent e) { + item_copy_ActionListener(e); + } + }); - item_stick.addActionListener(this); + item_stick.addActionListener(new ActionListener() { - item_delete.addActionListener(this); + public void actionPerformed(ActionEvent e) { + item_stick_ActionListener(e); + } + }); + item_delete.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + item_delete_ActionListener(e); + } + }); + item_all.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_all_ActionListener(e); + } + }); item_wordformat.addActionListener(this); item_changeline.addActionListener(this); @@ -245,6 +291,10 @@ public class Window extends JFrame implements ActionListener { } + private void item_new_window_ActionListener(ActionEvent e){ //新窗口按钮监听 + Window m = new Window("文本编辑器",200,300,500,500); + m.setVisible(true); + } private void item_open_ActionListener(ActionEvent e) { //打开按钮监听 String text = area.getText();// 获取文本内容 changed = false; @@ -356,7 +406,7 @@ public class Window extends JFrame implements ActionListener { JFileChooser filechooser = new JFileChooser();// 创建一个文件选择器 filechooser.setFileFilter(new FileNameExtensionFilter("文本文档(*.txt)", "txt"));// 设置文件过滤器 int i = filechooser.showOpenDialog(this);// 显示对话框 - if (i == filechooser.APPROVE_OPTION) {// 如果点击了打开按钮 + if (i == filechooser.APPROVE_OPTION) {// 如果点击了文件中的打开按钮 this.file = filechooser.getSelectedFile();// 获取选中的文件 this.setTitle(this.file.getName());// 设置标题 BufferedReader br = null;// 声明缓存输入流 @@ -381,6 +431,40 @@ public class Window extends JFrame implements ActionListener { } } } + + private void item_backout_ActionListener(ActionEvent e){ //撤销按钮监听 + if (manager.canUndo()){ + manager.undo(); //撤销方法 + } + + } + + private void item_cut_ActionListener(ActionEvent e){ //剪切按钮监听 + area.cut();// 剪切方法 + } + + private void item_copy_ActionListener(ActionEvent e){ //复制按钮监听 + area.copy();// 复制方法 + } + + private void item_stick_ActionListener(ActionEvent e){ //粘贴按钮监听 + area.paste();// 粘贴方法 + } + + private void item_delete_ActionListener(ActionEvent e){ //删除按钮监听 + String content = area.getSelectedText();// 获得选中的文本 + area.replaceSelection("");// 替换选中的文本 + } + private void item_all_ActionListener(ActionEvent e){ //全选按钮监听 + area.selectAll();// 全部选中 + } + //设置文本编辑器主窗口的图标 + private void setImage () { + ImageIcon imageIcon = new ImageIcon("D:\\IDEA\\IntelliJ IDEA Community Edition 2020.3.2\\" + + "Hello\\src\\design\\Text Editor.png"); + image = imageIcon.getImage(); + setIconImage(image); + } } diff --git a/src/design/about_texteditor.png b/src/design/about_texteditor.png new file mode 100644 index 0000000000000000000000000000000000000000..26060085eb419212a2aa2b8cdce01c370c5737a7 GIT binary patch literal 1193 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCwj^(N7l!{JxM1({$v_d#0*}aI zAngIhZYQ(tK!Rljj_E)ete@fByPj|c2IfniE{-7?_uk%&&WH&WVSAvz-EDQm)@@SS zD>^E2r-TW(emKbPxiO#mdj`g-HJ} zkabTmEPL3m#P)w)vd>k6t{bzsn{V`RXH&zyPx8JGLjFWAl5cdhyL z26pccoN5I|WoJZZmPItKE)=gj%n^5V<_q1V9amX?ePAqG_I%reG@1Fe8)AcB*u_j+ zr~Xl_&U0}$#U@!zsc=W#HkpN(K`i|9Jg_>-_bk9ilA1{zMyTC)=+(Xl}7GmUE5w z_4Bi2|1STa_ip9Yg3TOnj&xc`Crds*?(+Sw(~66`IAmt4y>jZ0c(=#vf}+XkIcx16 zo=eGZzA61J?@s?e=T4t#2dZQaY+WSuM`iiaQp-513RI67v)HXsT_-}y6}Z@pP&8nJqFWs+V#bN{2njeC-l>~%a+%9fs=`o6E@ z?*@l0|K9%4aNXXNyy4iH$4}&JqVm7Y)P2VGF=baB&;3r3sBV4Nr4iFTa*m|$kn86b z+~&9>D3#UfNLSkFXU)9@cKrt~T4=?7@8Z2PQ|6s_O4X(R;z^OeZcm&S+va-t&DsO+ zC7*9!7OL6mpnOp?KKI^*6P~A33KajD?9MS0`6^VQ)N5lix$s|u#R?gtE*Z`6WhbXS zst$Y}&edqD<@LJb$JPb$Pk!u^v5vK1e$RQ=Uh&JhWt%u{Ce69swz@zrOf_irrN5?& zq;ijFIx(de&beUET;cboefjIcc}&Y^wK-<{F_up~xH<=ETMIqFh(H@vt| z?Rs-f^=C2F4HDCrXy^$DeNUZe=VBbKw5upyR9ai;V%$alJi+w4y8^zXPkp*b+@`_& z^7CldUp$?A;`(p5?2|mVaihnQ8{SS%S4vK;V!f&LW!8&Ty&TuRi0c1(oOhRHT2{jJ z9M;B77X+BtZ!@RLYfC5XpUNWDWW%(2w#EN{MjSP_T$t*oIwmaXWI1+9-^NfejQ`x6xZ!DwJ*DAcMGBBvpn>G`sAvZrIGp&+<2G#iw)&ey!c)I$ztaD0e0sv*d5gz~m literal 0 HcmV?d00001 diff --git a/src/design/font.png b/src/design/font.png new file mode 100644 index 0000000000000000000000000000000000000000..284a3c4aa2dc7cb623ef42960dd5b30614ca6192 GIT binary patch literal 6434 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 literal 0 HcmV?d00001 -- Gitee From df54a2550497788ab5ef436205a9a8b20b432d78 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Tue, 8 Jun 2021 16:29:54 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E8=8F=9C=E5=8D=95=E4=B8=AD=20=E8=BD=AC=E5=88=B0=20?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E9=A1=B9=EF=BC=8C=E8=AE=BE=E7=BD=AE=E4=BA=86?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E8=8F=9C=E5=8D=95=E8=87=AA=E5=8A=A8=E6=8D=A2?= =?UTF-8?q?=E8=A1=8C=E5=8A=9F=E8=83=BD=E5=92=8C=E5=B8=AE=E5=8A=A9=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E4=B8=AD=E6=9F=A5=E7=9C=8B=E5=B8=AE=E5=8A=A9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 185 +++++++++++++++++++++++++++++++++++------ 1 file changed, 158 insertions(+), 27 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index 6b7089f..2c4bf3d 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -4,21 +4,22 @@ import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.undo.UndoManager; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; +import java.awt.event.*; import java.io.*; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; public class Window extends JFrame implements ActionListener { private JMenuBar menuBar; //菜单条 private JMenu menu_File, menu_Edit, menu_Format, menu_Check, menu_Help, item_zoom; //菜单条内的菜单 - private JMenuItem item_new, item_new_window,item_open, item_save, item_exit, item_saveas; + private JMenuItem item_new, item_new_window, item_open, item_save, item_exit, item_saveas; //file菜单的菜单项 - private JMenuItem item_backout, item_cut, item_copy, item_stick, item_delete,item_all; + private JMenuItem item_backout, item_cut, item_copy, item_stick, item_delete, item_all, item_goto; //edit菜单的菜单项 - private JMenuItem item_wordformat, item_changeline; + private JMenuItem item_wordformat; //format菜单的菜单项 private JMenuItem item_status, a, b; //check菜单的菜单项 @@ -34,16 +35,21 @@ public class Window extends JFrame implements ActionListener { //用作关闭时判断文件是否变化 private UndoManager manager; //撤销操作管理对象 + private JCheckBoxMenuItem item_changeline; + //自动换行 private Image image; + //文本编辑器主的图标 - public Window(String s,int x,int y,int w,int h) { //设置窗口属性 + public Window(String s, int x, int y, int w, int h) { //设置窗口属性 windowinit(); initEditArea(); initListener(); setImage(); - setSize(w,h); - setLocation(x,y); + setSize(w, h); + setLocation(x, y); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); + + } void windowinit() { //窗口内容的设置 @@ -54,8 +60,8 @@ public class Window extends JFrame implements ActionListener { item_new.setMnemonic('n'); item_new.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); //设置快捷键为CTRL+N item_new_window = new JMenuItem("新窗口(W)"); - item_new.setMnemonic('w'); - item_new.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK, true)); + item_new_window.setMnemonic('w'); + item_new_window.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK, true)); item_open = new JMenuItem("打开(O)"); item_open.setMnemonic('o'); item_open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); @@ -95,19 +101,23 @@ public class Window extends JFrame implements ActionListener { item_all = new JMenuItem("全选(A)"); item_all.setMnemonic('a'); item_all.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); + item_goto = new JMenuItem("转到(G)"); + item_goto.setMnemonic('g'); + item_goto.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.CTRL_MASK)); menu_Edit.add(item_backout); //将菜单项添加至菜单 menu_Edit.add(item_cut); menu_Edit.add(item_copy); menu_Edit.add(item_stick); menu_Edit.add(item_delete); menu_Edit.add(item_all); + menu_Edit.add(item_goto); //Edit 菜单 menu_Format = new JMenu("格式(O)"); menu_Format.setMnemonic('o'); item_wordformat = new JMenuItem("字体(F)"); item_wordformat.setMnemonic('f'); - item_changeline = new JMenuItem("自动换行(W)"); + item_changeline = new JCheckBoxMenuItem("自动换行(W)"); item_changeline.setMnemonic('w'); menu_Format.add(item_wordformat); //将菜单项添加至菜单 menu_Format.add(item_changeline); @@ -131,8 +141,10 @@ public class Window extends JFrame implements ActionListener { menu_Help = new JMenu("帮助(H)"); menu_Help.setMnemonic('h'); - item_check = new JMenuItem("查看帮助"); - item_about = new JMenuItem("关于文本编辑器"); + item_check = new JMenuItem("查看帮助(H)"); + item_check.setMnemonic('h'); + item_about = new JMenuItem("关于文本编辑器(A)"); + item_about.setMnemonic('a'); menu_Help.add(item_check); //将菜单项添加至菜单 menu_Help.add(item_about); //Help 菜单 @@ -238,30 +250,52 @@ public class Window extends JFrame implements ActionListener { item_stick_ActionListener(e); } }); + item_delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { item_delete_ActionListener(e); } }); + item_all.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { item_all_ActionListener(e); } }); + + item_goto.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_goto_ActionListener(e); + } + }); + item_wordformat.addActionListener(this); - item_changeline.addActionListener(this); + item_changeline.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_changeline_ActionListener(e); + } + }); item_zoom.addActionListener(this); a.addActionListener(this); b.addActionListener(this); + item_status.addActionListener(this); - item_check.addActionListener(this); + item_check.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_check_ActionListener(e); + } + }); + item_about.addActionListener(this); @@ -291,10 +325,11 @@ public class Window extends JFrame implements ActionListener { } - private void item_new_window_ActionListener(ActionEvent e){ //新窗口按钮监听 - Window m = new Window("文本编辑器",200,300,500,500); + private void item_new_window_ActionListener(ActionEvent e) { //新窗口按钮监听 + Window m = new Window("文本编辑器", 200, 300, 500, 500); m.setVisible(true); } + private void item_open_ActionListener(ActionEvent e) { //打开按钮监听 String text = area.getText();// 获取文本内容 changed = false; @@ -337,6 +372,7 @@ public class Window extends JFrame implements ActionListener { Save(); } } + protected void item_saveas_ActionListener(ActionEvent e) {// 另存为按钮监听 changed = false; FileDialog fd = new FileDialog(this, "另存为", FileDialog.SAVE);// 创建文件保存对话框 @@ -366,8 +402,8 @@ public class Window extends JFrame implements ActionListener { } } - private void item_exit_ActionListener(ActionEvent e){ //退出按钮监听 - dispose();// 销毁窗体 + private void item_exit_ActionListener(ActionEvent e) { //退出按钮监听 + dispose(); } private void Save() { // 保存文件的方法 @@ -432,32 +468,126 @@ public class Window extends JFrame implements ActionListener { } } - private void item_backout_ActionListener(ActionEvent e){ //撤销按钮监听 - if (manager.canUndo()){ + private void item_backout_ActionListener(ActionEvent e) { //撤销按钮监听 + if (manager.canUndo()) { manager.undo(); //撤销方法 } } - private void item_cut_ActionListener(ActionEvent e){ //剪切按钮监听 + private void item_cut_ActionListener(ActionEvent e) { //剪切按钮监听 area.cut();// 剪切方法 } - private void item_copy_ActionListener(ActionEvent e){ //复制按钮监听 + private void item_copy_ActionListener(ActionEvent e) { //复制按钮监听 area.copy();// 复制方法 } - private void item_stick_ActionListener(ActionEvent e){ //粘贴按钮监听 + private void item_stick_ActionListener(ActionEvent e) { //粘贴按钮监听 area.paste();// 粘贴方法 } - private void item_delete_ActionListener(ActionEvent e){ //删除按钮监听 + private void item_delete_ActionListener(ActionEvent e) { //删除按钮监听 String content = area.getSelectedText();// 获得选中的文本 area.replaceSelection("");// 替换选中的文本 } - private void item_all_ActionListener(ActionEvent e){ //全选按钮监听 + + private void item_all_ActionListener(ActionEvent e) { //全选按钮监听 area.selectAll();// 全部选中 } + + private void item_goto_ActionListener(ActionEvent e) { //转到按钮监听 + Goto(e); + } + + private void item_changeline_ActionListener(ActionEvent e) { //自动换行按钮监听 + if (item_changeline.isSelected()) {// 如果选中,则可以自动换行 + item_goto.setEnabled(true); + area.setLineWrap(true); + } else { + item_goto.setEnabled(true); + area.setLineWrap(false); + } + } + + private void Goto(ActionEvent e) { + JDialog dialog = new JDialog(this, "转到指定行"); + JButton define = new JButton("转到"); + JButton off = new JButton("取消"); + dialog.setLayout(null); + Container c = dialog.getContentPane(); + JLabel l = new JLabel("行号(L):"); + JTextField field = new JTextField(); + l.setBounds(10, 12, 400, 30); + field.setBounds(10, 42, 350, 28); + define.setBounds(180, 84, 80, 28); + define.setContentAreaFilled(false); + off.setBounds(270, 84, 80, 28); + off.setContentAreaFilled(false); + + dialog.setBounds(200, 200, 400, 160); + dialog.setResizable(false); + c.add(l); + c.add(field); + c.add(define); + c.add(off); + dialog.setVisible(true); + define.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + int r = area.getLineCount();// 确定行数 + String[] str = area.getText().split("\n"); + int count = 0; + try { + count = Integer.parseInt(field.getText().trim()); + } catch (Exception e2) { + JOptionPane.showMessageDialog(null, "请输入数字!"); + } + if (r >= count) { + int sum = 0; + for (int i = 0; i < count - 1; i++) { + sum += str[i].length() + 1; + } + area.setCaretPosition(sum); + dialog.dispose(); + } else { + JOptionPane.showMessageDialog(null, "行数超过了总行数!"); + } + } + }); + off.addActionListener(new + + ActionListener() { + + public void actionPerformed (ActionEvent e){ + dialog.dispose(); + } + }); +} + + private void item_check_ActionListener(ActionEvent e) { + // 打开指定网站查看帮助 + Desktop desk = Desktop.getDesktop(); + try { + URI uri = new URI( + "https://cn.bing.com/search?q=%E8%8E" + "%B7%E5%8F%96%E6%9C%89%E5%85%B3+windows+10+%E" + + "4%B8%AD%E7%9A%84%E8%AE%B0%E4%BA%8B%E6%9C%AC%E7%" + + "9A%84%E5%B8%AE%E5%8A%A9&filters=guid:%224466414-zh-h" + + "ans-dia%22%20lang:%22zh-hans%22&form=T00032&ocid=HelpPane-BingIA"); + desk.browse(uri); + } catch (MalformedURLException e1) { + // TODO 自动生成的 catch 块 + e1.printStackTrace(); + } catch (IOException e1) { + // TODO 自动生成的 catch 块 + e1.printStackTrace(); + } catch (URISyntaxException e1) { + // TODO 自动生成的 catch 块 + e1.printStackTrace(); + } + + } + //设置文本编辑器主窗口的图标 private void setImage () { ImageIcon imageIcon = new ImageIcon("D:\\IDEA\\IntelliJ IDEA Community Edition 2020.3.2\\" + @@ -465,6 +595,7 @@ public class Window extends JFrame implements ActionListener { image = imageIcon.getImage(); setIconImage(image); } + } -- Gitee From 9d178279e7b8fd2cf5440839d4f6cc1de894f2a3 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Tue, 8 Jun 2021 17:11:35 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BA=86=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E8=8F=9C=E5=8D=95=E9=87=8C=E7=9A=84=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E2=80=94=E6=94=BE=E5=A4=A7/=E7=BC=A9=E5=B0=8F/=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E9=BB=98=E8=AE=A4=E7=BC=A9=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 63 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index 2c4bf3d..09b8901 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -21,7 +21,7 @@ public class Window extends JFrame implements ActionListener { //edit菜单的菜单项 private JMenuItem item_wordformat; //format菜单的菜单项 - private JMenuItem item_status, a, b; + private JMenuItem item_status, enlarge, lessen, restore; //check菜单的菜单项 private JMenuItem item_about, item_check; //help菜单的菜单项 @@ -38,7 +38,6 @@ public class Window extends JFrame implements ActionListener { private JCheckBoxMenuItem item_changeline; //自动换行 private Image image; - //文本编辑器主的图标 public Window(String s, int x, int y, int w, int h) { //设置窗口属性 windowinit(); @@ -127,12 +126,17 @@ public class Window extends JFrame implements ActionListener { menu_Check.setMnemonic('v'); item_zoom = new JMenu("缩放(Z)"); item_zoom.setMnemonic('Z'); - a = new JMenuItem("放大(I)"); - item_zoom.add(a); + enlarge = new JMenuItem("放大(I)"); + enlarge.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, ActionEvent.CTRL_MASK)); + item_zoom.add(enlarge); item_zoom.setMnemonic('i'); - b = new JMenuItem("缩小(O)"); - item_zoom.add(b); + lessen = new JMenuItem("缩小(O)"); + lessen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, ActionEvent.CTRL_MASK)); + item_zoom.add(lessen); item_zoom.setMnemonic('o'); + restore = new JMenuItem("恢复默认缩放"); + restore.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_0, ActionEvent.CTRL_MASK)); + item_zoom.add(restore); item_status = new JMenuItem("状态栏(S)"); item_status.setMnemonic('s'); menu_Check.add(item_zoom); //将菜单项添加至菜单 @@ -193,12 +197,14 @@ public class Window extends JFrame implements ActionListener { item_new_ActionListener(e); } }); + item_new_window.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { item_new_window_ActionListener(e); } }); + item_open.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -217,6 +223,7 @@ public class Window extends JFrame implements ActionListener { item_saveas_ActionListener(e); } }); + item_exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -230,6 +237,7 @@ public class Window extends JFrame implements ActionListener { item_backout_ActionListener(e); } }); + item_cut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -281,11 +289,27 @@ public class Window extends JFrame implements ActionListener { } }); - item_zoom.addActionListener(this); + enlarge.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + enlarge_ActionListener(e); + } + }); + + lessen.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + lessen_ActionListener(e); + } + }); + + restore.addActionListener(new ActionListener() { - a.addActionListener(this); + public void actionPerformed(ActionEvent e) { + restore_ActionListener(e); + } + }); - b.addActionListener(this); item_status.addActionListener(this); @@ -565,6 +589,27 @@ public class Window extends JFrame implements ActionListener { }); } + private void enlarge_ActionListener(ActionEvent e) { + String name = area.getFont().getFontName(); // 返回字体外观 + int style = area.getFont().getStyle(); // 获得字体的样式 + int size = area.getFont().getSize(); // 获得字体的大小 + area.setFont(new Font(name, style, size + 1)); // 设置字体大小+1 + } + + private void lessen_ActionListener(ActionEvent e) { + String name = area.getFont().getFontName();// 返回字体外观 + int style = area.getFont().getStyle();// 获得字体的样式 + int size = area.getFont().getSize();// 获得字体的大小 + area.setFont(new Font(name, style, size - 1));// 设置字体大小-1 + } + + private void restore_ActionListener(ActionEvent e) { + String name = area.getFont().getFontName();// 返回字体外观 + int style = area.getFont().getStyle();// 获得字体的样式 + int size = area.getFont().getSize();// 获得字体的大小 + area.setFont(new Font(name, style, 14));// 默认四号(14) + } + private void item_check_ActionListener(ActionEvent e) { // 打开指定网站查看帮助 Desktop desk = Desktop.getDesktop(); -- Gitee From 64cb870ebfca108a690fb3430ca11dce4925c3b3 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Tue, 8 Jun 2021 18:26:55 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BA=86=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E8=8F=9C=E5=8D=95=E4=B8=AD=20=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=A0=8F=20=E8=8F=9C=E5=8D=95=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 66 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 5 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index 09b8901..6f68b01 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -1,6 +1,8 @@ package design; import javax.swing.*; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.undo.UndoManager; import java.awt.*; @@ -21,7 +23,7 @@ public class Window extends JFrame implements ActionListener { //edit菜单的菜单项 private JMenuItem item_wordformat; //format菜单的菜单项 - private JMenuItem item_status, enlarge, lessen, restore; + private JMenuItem enlarge, lessen, restore; //check菜单的菜单项 private JMenuItem item_about, item_check; //help菜单的菜单项 @@ -35,10 +37,24 @@ public class Window extends JFrame implements ActionListener { //用作关闭时判断文件是否变化 private UndoManager manager; //撤销操作管理对象 - private JCheckBoxMenuItem item_changeline; + private JCheckBoxMenuItem item_changeline,item_status; //自动换行 + private JToolBar toolBar; + //底部状态栏 + private JLabel label1; + private JLabel label2; + private JLabel labelCodeStyle; + //状态栏项 + private String codestyle = "UTF-8"; + // 编码格式 private Image image; - //文本编辑器主的图标 + //文本编辑器的主图标 + int length=0; + int linenum=1; + int columnnum=1; + //状态栏变量 + + public Window(){} public Window(String s, int x, int y, int w, int h) { //设置窗口属性 windowinit(); initEditArea(); @@ -137,7 +153,7 @@ public class Window extends JFrame implements ActionListener { restore = new JMenuItem("恢复默认缩放"); restore.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_0, ActionEvent.CTRL_MASK)); item_zoom.add(restore); - item_status = new JMenuItem("状态栏(S)"); + item_status = new JCheckBoxMenuItem("状态栏(S)"); item_status.setMnemonic('s'); menu_Check.add(item_zoom); //将菜单项添加至菜单 menu_Check.add(item_status); @@ -311,7 +327,12 @@ public class Window extends JFrame implements ActionListener { }); - item_status.addActionListener(this); + item_status.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_status_ActionListener(e); + } + }); item_check.addActionListener(new ActionListener() { @@ -610,6 +631,41 @@ public class Window extends JFrame implements ActionListener { area.setFont(new Font(name, style, 14));// 默认四号(14) } + private void item_status_ActionListener(ActionEvent e){ + toolBar = new JToolBar(); + toolBar.setSize(area.getSize().width, 10); + toolBar.addSeparator(); + label1 = new JLabel(" 第 " + linenum + " 行, 第 " + columnnum + " 列 "); + toolBar.add(label1); + toolBar.addSeparator(); + label2 = new JLabel(" 一共 " + length + " 字 "); + toolBar.add(label2); + area.addCaretListener(new CaretListener() { + //记录行数和列数 + public void caretUpdate(CaretEvent e) { + //sum=0; + JTextArea editArea = (JTextArea) e.getSource(); + if (item_status.isSelected()) { + toolBar.setVisible(true); + } else { + toolBar.setVisible(false); + } + try { + int caretpos = editArea.getCaretPosition(); + linenum = editArea.getLineOfOffset(caretpos); + columnnum = caretpos - area.getLineStartOffset(linenum); + linenum += 1; + label1.setText(" 第 " + linenum + " 行, 第 " + (columnnum + 1) + " 列 "); + + length = Window.this.area.getText().toString().length(); + label2.setText(" 一共 " + length + " 字 "); + } catch (Exception ex) { + } + } + }); + this.add(toolBar,BorderLayout.SOUTH); + } + private void item_check_ActionListener(ActionEvent e) { // 打开指定网站查看帮助 Desktop desk = Desktop.getDesktop(); -- Gitee From 703092fa3836786f905e16fe031f7b7c645e2378 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Tue, 8 Jun 2021 22:47:10 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BA=86=E9=BC=A0?= =?UTF-8?q?=E6=A0=87=E5=8F=B3=E9=94=AE=E5=BC=B9=E7=AA=97=E5=92=8C=E5=85=B6?= =?UTF-8?q?=E4=B8=AD=E5=AF=B9=E4=BA=8B=E4=BB=B6=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 105 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 7 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index 6f68b01..32587c4 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -35,7 +35,7 @@ public class Window extends JFrame implements ActionListener { //打开和保存共同的成员变量 private boolean changed; //用作关闭时判断文件是否变化 - private UndoManager manager; + public UndoManager manager; //撤销操作管理对象 private JCheckBoxMenuItem item_changeline,item_status; //自动换行 @@ -45,8 +45,10 @@ public class Window extends JFrame implements ActionListener { private JLabel label2; private JLabel labelCodeStyle; //状态栏项 - private String codestyle = "UTF-8"; - // 编码格式 + private JPopupMenu popu; + // 弹出式菜单 + private JMenuItem item_backout1,item_cut1,item_copy1,item_stick1,item_delete1,item_all1; + // 弹出式菜单的菜单项 private Image image; //文本编辑器的主图标 int length=0; @@ -62,6 +64,7 @@ public class Window extends JFrame implements ActionListener { setImage(); setSize(w, h); setLocation(x, y); + Popu(); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); @@ -138,7 +141,7 @@ public class Window extends JFrame implements ActionListener { menu_Format.add(item_changeline); //Format 菜单 - menu_Check = new JMenu("查看(v)"); + menu_Check = new JMenu("查看(V)"); menu_Check.setMnemonic('v'); item_zoom = new JMenu("缩放(Z)"); item_zoom.setMnemonic('Z'); @@ -204,7 +207,7 @@ public class Window extends JFrame implements ActionListener { } /* - * 对所有菜单项统一设置监听器 + * 对菜单项设置监听器 */ public void initListener() { item_new.addActionListener(new ActionListener() { @@ -250,6 +253,7 @@ public class Window extends JFrame implements ActionListener { item_backout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { + area.getDocument().addUndoableEditListener(manager); item_backout_ActionListener(e); } }); @@ -514,10 +518,12 @@ public class Window extends JFrame implements ActionListener { } private void item_backout_ActionListener(ActionEvent e) { //撤销按钮监听 - if (manager.canUndo()) { + manager = new UndoManager(); + if (e.getSource() == item_backout) { + if(manager.canUndo()){ manager.undo(); //撤销方法 + } } - } private void item_cut_ActionListener(ActionEvent e) { //剪切按钮监听 @@ -696,7 +702,92 @@ public class Window extends JFrame implements ActionListener { image = imageIcon.getImage(); setIconImage(image); } + private void Popu(){ + popu = new JPopupMenu();// 弹出式菜单实例化 + item_backout1 = new JMenuItem("撤销(U)"); + item_backout1.setMnemonic('u'); + item_backout1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK)); + item_cut1 = new JMenuItem("剪切(T)"); + item_cut1.setMnemonic('t'); + item_cut1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); + item_copy1 = new JMenuItem("复制(C)"); + item_copy1.setMnemonic('c'); + item_copy1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); + item_stick1 = new JMenuItem("粘贴(P)"); + item_stick1.setMnemonic('p'); + item_stick1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); + item_delete1 = new JMenuItem("删除(L)"); + item_delete1.setMnemonic('l'); + item_delete1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK)); + item_all1 = new JMenuItem("全选(A)"); + item_all1.setMnemonic('a'); + item_all1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); + //弹出式菜单的菜单项实例化 + item_backout1.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_backout_ActionListener(e); + } + }); + item_cut1.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_cut_ActionListener(e); + } + }); + item_copy1.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_copy_ActionListener(e); + } + }); + item_stick1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + item_stick_ActionListener(e); + } + }); + item_delete1.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_delete_ActionListener(e); + } + }); + item_all1.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + item_all_ActionListener(e); + } + }); + popu.add(item_backout1); + popu.add(item_cut1); + popu.add(item_copy1); + popu.add(item_stick1); + popu.add(item_delete1); + popu.add(item_all1); + + area.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (area.getText().equals("")) { + item_all1.setEnabled(false); + } else { + item_all1.setEnabled(true); + } + if (area.getSelectedText() == null) { + item_cut1.setEnabled(false); + item_copy1.setEnabled(false); + item_delete1.setEnabled(false); + } else { + item_cut1.setEnabled(true); + item_copy1.setEnabled(true); + item_delete1.setEnabled(true); + } + if (e.getButton() == 3) { + popu.show(e.getComponent(), e.getX(), e.getY()); + } + } + }); + } } -- Gitee From 9cb990b4b15c0259cb2e4617aa78df7f2af8528d Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Wed, 9 Jun 2021 18:18:38 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E5=B7=B2=E5=AE=8C=E6=88=90=EF=BC=8C?= =?UTF-8?q?=E6=9C=80=E5=90=8E=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/About_Window.java | 23 ++++++++++++----------- src/design/Format_Window.java | 22 ++++++++++++++++------ src/design/Text Editor.png | Bin 0 -> 19138 bytes src/design/Texteditor.java | 3 ++- src/design/Window.java | 33 +++++++++++++++------------------ src/design/texteditor.png | Bin 6434 -> 0 bytes src/test01/Test02.java | 7 ------- 7 files changed, 45 insertions(+), 43 deletions(-) create mode 100644 src/design/Text Editor.png delete mode 100644 src/design/texteditor.png delete mode 100644 src/test01/Test02.java diff --git a/src/design/About_Window.java b/src/design/About_Window.java index 1f6eb55..76dabd8 100644 --- a/src/design/About_Window.java +++ b/src/design/About_Window.java @@ -4,11 +4,11 @@ import javax.swing.*; import java.awt.*; public class About_Window extends JFrame { - private JButton button_ok; - private JLabel about_label; - private JPanel panel ; - private Image image; - /** + private JButton button_ok; //"OK"按钮 + private JLabel about_label; //关于文本编辑器窗口的标签 + private JPanel panel ; //关于文本编辑器窗口的面板 + private Image image; //关于文本编辑器窗口的图标 + /* * 关于文本编辑器的窗口的构造函数 */ public About_Window() { //设置点击帮助-关于文本编辑器后弹出的窗口 @@ -20,25 +20,26 @@ public class About_Window extends JFrame { panel = new JPanel(); about_label = new JLabel(); - button_ok = new JButton("OK"); - panel.setLayout(null); - about_label.setBounds(50,-70,200,300); - button_ok.setBounds(270,200,70,35); + button_ok = new JButton("确定"); + panel.setLayout(null); //设置为空布局 + about_label.setBounds(50,-70,200,300); //设置标签的位置和大小 + button_ok.setBounds(270,200,70,35); //设置按钮的位置和大小 about_label.setText("文本编辑器
版本号:2021-6-10
制作者:KYoungZ"); //设置标签about_label内容 - //添加标签、按钮、面板 panel.add(about_label); panel.add(button_ok); this.add(panel); + //添加标签、按钮、面板 button_ok.addActionListener(e->{ this.dispose(); }); + //点击按钮”OK“,关闭窗口 } //设置窗体图标 private void setImage(){ ImageIcon imageIcon = new ImageIcon("D:\\IDEA\\IntelliJ IDEA Community Edition 2020.3.2\\" + - "Hello\\src\\design\\texteditor.png"); + "Hello\\src\\design\\about_texteditor.png"); image = imageIcon.getImage(); setIconImage(image); } diff --git a/src/design/Format_Window.java b/src/design/Format_Window.java index c81ae0f..2694608 100644 --- a/src/design/Format_Window.java +++ b/src/design/Format_Window.java @@ -8,13 +8,14 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class Format_Window extends JFrame { - private JComboBox word_style; - private JComboBox word_size; - private JComboBox word_pattern; + private JComboBox word_style;//字形下拉列表 + private JComboBox word_size;//字号下拉列表 + private JComboBox word_pattern;//字体下拉列表 private JPanel paneNorth; //装下拉列表的面板容器,位置为BoderLayout布局中的”北“区域 private JPanel paneCenter; //装字体展示文本框的面板容器,位置为BoderLayout布局中的”中“区域 private JPanel paneSouth; //装按钮的面板容器,位置为BoderLayout布局中的”南“区域 private JTextField showText; //字体展示文本框 + private Image image;//文字格式窗口的图标 private Font selectedFont; private String selectedPattern = "宋体"; @@ -34,6 +35,7 @@ public class Format_Window extends JFrame { initButton(); initFormat(); initListener(); + setImage(); this.setSize(550, 200); this.setTitle("文字格式"); @@ -83,7 +85,7 @@ public class Format_Window extends JFrame { } } }); - //字体大小 + //字号 word_size.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { @@ -92,7 +94,7 @@ public class Format_Window extends JFrame { } } }); - //字型 + //字形 word_style.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { @@ -153,4 +155,12 @@ public class Format_Window extends JFrame { button_ok = new JButton("确定"); button_cancel = new JButton("取消"); } -} + + //设置窗体图标 + private void setImage(){ + ImageIcon imageIcon = new ImageIcon("D:\\IDEA\\IntelliJ IDEA Community Edition 2020.3.2\\" + + "Hello\\src\\design\\font.png"); + image = imageIcon.getImage(); + setIconImage(image); + } +} \ No newline at end of file diff --git a/src/design/Text Editor.png b/src/design/Text Editor.png new file mode 100644 index 0000000000000000000000000000000000000000..4788344a5a1cf2c99949cfd1fd1a7fd7269f8cd8 GIT binary patch literal 19138 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 Hu0mjfJQwrf literal 0 HcmV?d00001 diff --git a/src/design/Texteditor.java b/src/design/Texteditor.java index 3c03ba8..a4d1572 100644 --- a/src/design/Texteditor.java +++ b/src/design/Texteditor.java @@ -2,6 +2,7 @@ package design; public class Texteditor { public static void main(String[] args) { - Window win = new Window("文本编辑器",20,30,500,500); + Window win = new Window("文本编辑器",100,100,500,500); + win.setVisible(true); } } diff --git a/src/design/Window.java b/src/design/Window.java index 32587c4..137460a 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -350,7 +350,7 @@ public class Window extends JFrame implements ActionListener { } - private void item_new_ActionListener(ActionEvent e) { //新建按钮监听 + private void item_new_ActionListener(ActionEvent e) { //新建按钮监听方法 this.file = null; changed = false; @@ -374,12 +374,12 @@ public class Window extends JFrame implements ActionListener { } - private void item_new_window_ActionListener(ActionEvent e) { //新窗口按钮监听 + private void item_new_window_ActionListener(ActionEvent e) { //新窗口按钮监听方法 Window m = new Window("文本编辑器", 200, 300, 500, 500); m.setVisible(true); } - private void item_open_ActionListener(ActionEvent e) { //打开按钮监听 + private void item_open_ActionListener(ActionEvent e) { //打开按钮监听方法 String text = area.getText();// 获取文本内容 changed = false; if (text.isEmpty()) {// 如果文本为空,那么直接打开文件选择器 @@ -398,7 +398,7 @@ public class Window extends JFrame implements ActionListener { } } - private void item_save_ActionListener(ActionEvent e) { //保存按钮监听 + private void item_save_ActionListener(ActionEvent e) { //保存按钮监听方法 String text = area.getText();// 获取文本域的内容 changed = false; if (this.file != null) {// 判断文件是否存在,如果已经存在直接保存 @@ -422,7 +422,7 @@ public class Window extends JFrame implements ActionListener { } } - protected void item_saveas_ActionListener(ActionEvent e) {// 另存为按钮监听 + protected void item_saveas_ActionListener(ActionEvent e) {// 另存为按钮监听方法 changed = false; FileDialog fd = new FileDialog(this, "另存为", FileDialog.SAVE);// 创建文件保存对话框 fd.setFile(this.getTitle() + ".txt"); @@ -451,7 +451,7 @@ public class Window extends JFrame implements ActionListener { } } - private void item_exit_ActionListener(ActionEvent e) { //退出按钮监听 + private void item_exit_ActionListener(ActionEvent e) { //退出按钮监听方法 dispose(); } @@ -517,7 +517,7 @@ public class Window extends JFrame implements ActionListener { } } - private void item_backout_ActionListener(ActionEvent e) { //撤销按钮监听 + private void item_backout_ActionListener(ActionEvent e) { //撤销按钮监听方法 manager = new UndoManager(); if (e.getSource() == item_backout) { if(manager.canUndo()){ @@ -526,32 +526,32 @@ public class Window extends JFrame implements ActionListener { } } - private void item_cut_ActionListener(ActionEvent e) { //剪切按钮监听 + private void item_cut_ActionListener(ActionEvent e) { //剪切按钮监听方法 area.cut();// 剪切方法 } - private void item_copy_ActionListener(ActionEvent e) { //复制按钮监听 + private void item_copy_ActionListener(ActionEvent e) { //复制按钮监听方法 area.copy();// 复制方法 } - private void item_stick_ActionListener(ActionEvent e) { //粘贴按钮监听 + private void item_stick_ActionListener(ActionEvent e) { //粘贴按钮监听方法 area.paste();// 粘贴方法 } - private void item_delete_ActionListener(ActionEvent e) { //删除按钮监听 + private void item_delete_ActionListener(ActionEvent e) { //删除按钮监听方法 String content = area.getSelectedText();// 获得选中的文本 area.replaceSelection("");// 替换选中的文本 } - private void item_all_ActionListener(ActionEvent e) { //全选按钮监听 + private void item_all_ActionListener(ActionEvent e) { //全选按钮监听方法 area.selectAll();// 全部选中 } - private void item_goto_ActionListener(ActionEvent e) { //转到按钮监听 + private void item_goto_ActionListener(ActionEvent e) { //转到按钮监听方法 Goto(e); } - private void item_changeline_ActionListener(ActionEvent e) { //自动换行按钮监听 + private void item_changeline_ActionListener(ActionEvent e) { //自动换行按钮监听方法 if (item_changeline.isSelected()) {// 如果选中,则可以自动换行 item_goto.setEnabled(true); area.setLineWrap(true); @@ -606,10 +606,7 @@ public class Window extends JFrame implements ActionListener { } } }); - off.addActionListener(new - - ActionListener() { - + off.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent e){ dialog.dispose(); } diff --git a/src/design/texteditor.png b/src/design/texteditor.png deleted file mode 100644 index 284a3c4aa2dc7cb623ef42960dd5b30614ca6192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6434 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 diff --git a/src/test01/Test02.java b/src/test01/Test02.java deleted file mode 100644 index f5a1430..0000000 --- a/src/test01/Test02.java +++ /dev/null @@ -1,7 +0,0 @@ -package test01; - -public class Test02 { - public static void main(String[] args) { - System.out.println("上传测试"); - } -} -- Gitee From f1fd219be50cd3c618876be3ac9e00d170a29284 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Wed, 9 Jun 2021 18:33:49 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/test01?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test01/Test.java | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 src/test01/Test.java diff --git a/src/test01/Test.java b/src/test01/Test.java deleted file mode 100644 index 4bba053..0000000 --- a/src/test01/Test.java +++ /dev/null @@ -1,7 +0,0 @@ -package test01; - -public class Test { - public static void main(String[] args) { - System.out.println("Hello!"); - } -} -- Gitee From 00306a1cc0028670e5704a2258831912f42d1654 Mon Sep 17 00:00:00 2001 From: KYoungZ <763838429@qq.com> Date: Thu, 10 Jun 2021 10:45:34 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=8F=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BD=BF=E5=85=B6?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/design/Window.java | 98 ++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/src/design/Window.java b/src/design/Window.java index 137460a..7864a56 100644 --- a/src/design/Window.java +++ b/src/design/Window.java @@ -51,26 +51,26 @@ public class Window extends JFrame implements ActionListener { // 弹出式菜单的菜单项 private Image image; //文本编辑器的主图标 + private boolean flag; + //状态栏选项是否选择的标志 int length=0; int linenum=1; int columnnum=1; //状态栏变量 - - public Window(){} public Window(String s, int x, int y, int w, int h) { //设置窗口属性 - windowinit(); + initMenu(); initEditArea(); initListener(); setImage(); + Popu(); + initToolBar(); setSize(w, h); setLocation(x, y); - Popu(); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); - - + this.setVisible(true); } - void windowinit() { //窗口内容的设置 + void initMenu() { //窗口内容的设置 menuBar = new JMenuBar(); menu_File = new JMenu("文件(F)"); menu_File.setMnemonic('f'); //快捷键f+alt打开 @@ -146,13 +146,13 @@ public class Window extends JFrame implements ActionListener { item_zoom = new JMenu("缩放(Z)"); item_zoom.setMnemonic('Z'); enlarge = new JMenuItem("放大(I)"); - enlarge.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, ActionEvent.CTRL_MASK)); + enlarge.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_MASK)); item_zoom.add(enlarge); - item_zoom.setMnemonic('i'); + enlarge.setMnemonic('i'); lessen = new JMenuItem("缩小(O)"); - lessen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, ActionEvent.CTRL_MASK)); + lessen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, KeyEvent.CTRL_MASK)); item_zoom.add(lessen); - item_zoom.setMnemonic('o'); + lessen.setMnemonic('o'); restore = new JMenuItem("恢复默认缩放"); restore.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_0, ActionEvent.CTRL_MASK)); item_zoom.add(restore); @@ -253,7 +253,6 @@ public class Window extends JFrame implements ActionListener { item_backout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - area.getDocument().addUndoableEditListener(manager); item_backout_ActionListener(e); } }); @@ -334,7 +333,13 @@ public class Window extends JFrame implements ActionListener { item_status.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - item_status_ActionListener(e); + if (flag) { + flag = false; + toolBar.setVisible(flag); + } else if (flag == false) { + flag = true; + toolBar.setVisible(flag); + } } }); @@ -519,6 +524,7 @@ public class Window extends JFrame implements ActionListener { private void item_backout_ActionListener(ActionEvent e) { //撤销按钮监听方法 manager = new UndoManager(); + area.getDocument().addUndoableEditListener(manager); if (e.getSource() == item_backout) { if(manager.canUndo()){ manager.undo(); //撤销方法 @@ -607,6 +613,7 @@ public class Window extends JFrame implements ActionListener { } }); off.addActionListener(new ActionListener() { + public void actionPerformed (ActionEvent e){ dialog.dispose(); } @@ -634,41 +641,37 @@ public class Window extends JFrame implements ActionListener { area.setFont(new Font(name, style, 14));// 默认四号(14) } - private void item_status_ActionListener(ActionEvent e){ - toolBar = new JToolBar(); - toolBar.setSize(area.getSize().width, 10); - toolBar.addSeparator(); - label1 = new JLabel(" 第 " + linenum + " 行, 第 " + columnnum + " 列 "); - toolBar.add(label1); - toolBar.addSeparator(); - label2 = new JLabel(" 一共 " + length + " 字 "); - toolBar.add(label2); - area.addCaretListener(new CaretListener() { - //记录行数和列数 - public void caretUpdate(CaretEvent e) { - //sum=0; - JTextArea editArea = (JTextArea) e.getSource(); - if (item_status.isSelected()) { - toolBar.setVisible(true); - } else { - toolBar.setVisible(false); - } - try { - int caretpos = editArea.getCaretPosition(); - linenum = editArea.getLineOfOffset(caretpos); - columnnum = caretpos - area.getLineStartOffset(linenum); - linenum += 1; - label1.setText(" 第 " + linenum + " 行, 第 " + (columnnum + 1) + " 列 "); - - length = Window.this.area.getText().toString().length(); - label2.setText(" 一共 " + length + " 字 "); - } catch (Exception ex) { + //设置状态栏 + private void initToolBar() { + toolBar = new JToolBar(); + toolBar.setVisible(flag); + toolBar.setSize(area.getSize().width, 10); + toolBar.addSeparator(); + label1 = new JLabel(" 第 " + linenum + " 行, 第 " + columnnum + " 列 "); + toolBar.add(label1); + toolBar.addSeparator(); + label2 = new JLabel(" 一共 " + length + " 字 "); + toolBar.add(label2); + area.addCaretListener(new CaretListener() { + //记录行数和列数 + public void caretUpdate(CaretEvent e) { + //sum=0; + JTextArea editArea = (JTextArea) e.getSource(); + try { + int caretpos = editArea.getCaretPosition(); + linenum = editArea.getLineOfOffset(caretpos); + columnnum = caretpos - area.getLineStartOffset(linenum); + linenum += 1; + label1.setText(" 第 " + linenum + " 行, 第 " + (columnnum + 1) + " 列 "); + + length = Window.this.area.getText().toString().length(); + label2.setText(" 一共 " + length + " 字 "); + } catch (Exception ex) { + } } - } - }); - this.add(toolBar,BorderLayout.SOUTH); - } - + }); + this.add(toolBar, BorderLayout.SOUTH); + } private void item_check_ActionListener(ActionEvent e) { // 打开指定网站查看帮助 Desktop desk = Desktop.getDesktop(); @@ -699,6 +702,7 @@ public class Window extends JFrame implements ActionListener { image = imageIcon.getImage(); setIconImage(image); } + private void Popu(){ popu = new JPopupMenu();// 弹出式菜单实例化 item_backout1 = new JMenuItem("撤销(U)"); -- Gitee