From 936cc9444b6741c598263f8788aab3dbfde19512 Mon Sep 17 00:00:00 2001 From: wilkins <422341050@qq.com> Date: Wed, 19 May 2021 21:03:45 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=88=B6=E9=80=A0=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/TextEditor.java | 5 +++++ src/java2020spring/TextEditorMainClass.java | 14 ++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/java2020spring/TextEditor.java create mode 100644 src/java2020spring/TextEditorMainClass.java diff --git a/src/java2020spring/TextEditor.java b/src/java2020spring/TextEditor.java new file mode 100644 index 0000000..24b6e07 --- /dev/null +++ b/src/java2020spring/TextEditor.java @@ -0,0 +1,5 @@ +package java2020spring; + +public class TextEditor { + +} diff --git a/src/java2020spring/TextEditorMainClass.java b/src/java2020spring/TextEditorMainClass.java new file mode 100644 index 0000000..337aa8e --- /dev/null +++ b/src/java2020spring/TextEditorMainClass.java @@ -0,0 +1,14 @@ +package java2020spring; + +import javax.swing.JFrame; + +public class TextEditorMainClass { + public static void main(String args[]) { + TextEditor text=new TextEditor(); + text.setSize(800, 600); + text.setLocation(0, 0); + text.setVisible(true); + text.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } + +} -- Gitee From 8e7a240a59d67f63dd98322426aa6599609e24bb Mon Sep 17 00:00:00 2001 From: wilkins <422341050@qq.com> Date: Tue, 25 May 2021 19:54:34 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=A0=8F=E4=BB=A5=E5=8F=8A=E6=96=87=E6=9C=AC=E6=A1=86=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=91=E8=A7=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/TextEditor.java | 105 ++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/src/java2020spring/TextEditor.java b/src/java2020spring/TextEditor.java index 24b6e07..7608473 100644 --- a/src/java2020spring/TextEditor.java +++ b/src/java2020spring/TextEditor.java @@ -1,5 +1,108 @@ package java2020spring; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; -public class TextEditor { +public class TextEditor extends JFrame implements ActionListener{ + JMenuBar menuBar; + JMenu menu1,menu2,menu3,menu4,menu5; + JMenuItem item11,item12,item13,item14,item15; + JMenuItem item21,item22,item23,item24,item25,item26; + JMenuItem item31; + JMenuItem item41; + JMenuItem item51,item52; + JTextArea textShow; + JScrollPane scroll; + + public TextEditor() { + editMenuBar(); + textArea(); + addActionListener(); + this.setJMenuBar(menuBar); + this.setSize(800, 600); + this.setLocation(0, 0); + this.setVisible(true); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setTitle("文本编辑器"); + + } + + public void editMenuBar() { //设计菜单栏 + menuBar=new JMenuBar(); + menu1=new JMenu("文件"); + menu2=new JMenu("编辑"); + menu3=new JMenu("格式"); + menu4=new JMenu("查看"); + menu5=new JMenu("帮助"); + menuBar.add(menu1); + menuBar.add(menu2); + menuBar.add(menu3); + menuBar.add(menu4); + menuBar.add(menu5); + item11=new JMenuItem("新建"); + item12=new JMenuItem("打开"); + item13=new JMenuItem("保存"); + item14=new JMenuItem("另存为"); + item15=new JMenuItem("退出"); + menu1.add(item11); + menu1.add(item12); + menu1.add(item13); + menu1.add(item14); + menu1.add(item15); + item21=new JMenuItem("撤销"); + item22=new JMenuItem("剪切"); + item23=new JMenuItem("复制"); + item24=new JMenuItem("粘贴"); + item25=new JMenuItem("删除"); + item26=new JMenuItem("全选"); + menu2.add(item21); + menu2.add(item22); + menu2.add(item23); + menu2.add(item24); + menu2.add(item25); + menu2.add(item26); + item31=new JMenuItem("自动换行"); + menu3.add(item31); + item41=new JMenuItem("状态栏"); + menu4.add(item41); + item51=new JMenuItem("查看帮助"); + item52=new JMenuItem("关于记事本"); + menu5.add(item51); + menu5.add(item52); + } + + public void textArea() { //设计文本框 + textShow=new JTextArea(); + scroll=new JScrollPane(textShow); + } + + public static void main(String args[]) { + TextEditor text=new TextEditor(); + } + + @Override + public void actionPerformed(ActionEvent e) { + + } + + public void addActionListener() { //添加监视器 + item11.addActionListener(this); + item12.addActionListener(this); + item13.addActionListener(this); + item14.addActionListener(this); + item15.addActionListener(this); + item21.addActionListener(this); + item22.addActionListener(this); + item23.addActionListener(this); + item24.addActionListener(this); + item25.addActionListener(this); + item26.addActionListener(this); + item31.addActionListener(this); + item41.addActionListener(this); + item51.addActionListener(this); + item52.addActionListener(this); + } } + + -- Gitee From 1a86c220b882eb6149632c9ad1d790a28c327907 Mon Sep 17 00:00:00 2001 From: wilkins <422341050@qq.com> Date: Tue, 1 Jun 2021 23:13:25 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E9=83=A8=E5=88=86=E7=9A=84=E7=9B=91=E8=A7=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/About.java | 21 ++++ src/java2020spring/TextEditor.java | 159 +++++++++++++++++------------ 2 files changed, 114 insertions(+), 66 deletions(-) create mode 100644 src/java2020spring/About.java diff --git a/src/java2020spring/About.java b/src/java2020spring/About.java new file mode 100644 index 0000000..f3100ec --- /dev/null +++ b/src/java2020spring/About.java @@ -0,0 +1,21 @@ +package java2020spring; + +import javax.swing.*; + +public class About extends JFrame{ + JPanel panel; + JLabel label; + public About() { + this.setTitle("关于记事本"); + this.setSize(200, 100); + this.setLocation(200, 300); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.setVisible(true); + panel=new JPanel(); + label=new JLabel("制作人:hyb"); + panel.add(label); + add(label); + + } + +} diff --git a/src/java2020spring/TextEditor.java b/src/java2020spring/TextEditor.java index 7608473..fde6de3 100644 --- a/src/java2020spring/TextEditor.java +++ b/src/java2020spring/TextEditor.java @@ -2,17 +2,19 @@ package java2020spring; import javax.swing.*; import java.awt.*; import java.awt.event.*; +import java.io.*; public class TextEditor extends JFrame implements ActionListener{ JMenuBar menuBar; - JMenu menu1,menu2,menu3,menu4,menu5; - JMenuItem item11,item12,item13,item14,item15; - JMenuItem item21,item22,item23,item24,item25,item26; - JMenuItem item31; - JMenuItem item41; - JMenuItem item51,item52; + JMenu menuFile,menuEditor,menuFormat,menuCheck,menuHelp; + JMenuItem itemNew,itemOpen,itemSave,itemSaveTo,itemQuit; + JMenuItem itemRevoke,itemCut,itemCopy,itemPaste,itemDelete,item26; + JMenuItem itemWordWrap; + JMenuItem itemStatus; + JMenuItem itemCheckHelp,itemAbout; JTextArea textShow; JScrollPane scroll; + JFileChooser fileChooser; public TextEditor() { editMenuBar(); @@ -30,79 +32,104 @@ public class TextEditor extends JFrame implements ActionListener{ public void editMenuBar() { //设计菜单栏 menuBar=new JMenuBar(); - menu1=new JMenu("文件"); - menu2=new JMenu("编辑"); - menu3=new JMenu("格式"); - menu4=new JMenu("查看"); - menu5=new JMenu("帮助"); - menuBar.add(menu1); - menuBar.add(menu2); - menuBar.add(menu3); - menuBar.add(menu4); - menuBar.add(menu5); - item11=new JMenuItem("新建"); - item12=new JMenuItem("打开"); - item13=new JMenuItem("保存"); - item14=new JMenuItem("另存为"); - item15=new JMenuItem("退出"); - menu1.add(item11); - menu1.add(item12); - menu1.add(item13); - menu1.add(item14); - menu1.add(item15); - item21=new JMenuItem("撤销"); - item22=new JMenuItem("剪切"); - item23=new JMenuItem("复制"); - item24=new JMenuItem("粘贴"); - item25=new JMenuItem("删除"); - item26=new JMenuItem("全选"); - menu2.add(item21); - menu2.add(item22); - menu2.add(item23); - menu2.add(item24); - menu2.add(item25); - menu2.add(item26); - item31=new JMenuItem("自动换行"); - menu3.add(item31); - item41=new JMenuItem("状态栏"); - menu4.add(item41); - item51=new JMenuItem("查看帮助"); - item52=new JMenuItem("关于记事本"); - menu5.add(item51); - menu5.add(item52); + menuFile=new JMenu("文件"); + menuEditor=new JMenu("编辑"); + menuFormat=new JMenu("格式"); + menuCheck=new JMenu("查看"); + menuHelp=new JMenu("帮助"); + menuBar.add(menuFile); + menuBar.add(menuEditor); + menuBar.add(menuFormat); + menuBar.add(menuCheck); + menuBar.add(menuHelp); + itemNew=new JMenuItem("新建"); + itemOpen=new JMenuItem("打开"); + itemSave=new JMenuItem("保存"); + itemSaveTo=new JMenuItem("另存为"); + itemQuit=new JMenuItem("退出"); + menuFile.add(itemNew); + menuFile.add(itemOpen); + menuFile.add(itemSave); + menuFile.add(itemSaveTo); + menuFile.add(itemQuit); + itemRevoke=new JMenuItem("撤销"); + itemCut=new JMenuItem("剪切"); + itemCopy=new JMenuItem("复制"); + itemPaste=new JMenuItem("粘贴"); + itemDelete=new JMenuItem("删除"); + item26=new JMenuItem("右键"); + menuEditor.add(itemRevoke); + menuEditor.add(itemCut); + menuEditor.add(itemCopy); + menuEditor.add(itemPaste); + menuEditor.add(itemDelete); + menuEditor.add(item26); + itemWordWrap=new JMenuItem("自动换行"); + menuFormat.add(itemWordWrap); + itemStatus=new JMenuItem("状态栏"); + menuCheck.add(itemStatus); + itemCheckHelp=new JMenuItem("查看帮助"); + itemAbout=new JMenuItem("关于记事本"); + menuHelp.add(itemCheckHelp); + menuHelp.add(itemAbout); } public void textArea() { //设计文本框 textShow=new JTextArea(); scroll=new JScrollPane(textShow); + add(scroll,BorderLayout.CENTER); } public static void main(String args[]) { TextEditor text=new TextEditor(); } - @Override - public void actionPerformed(ActionEvent e) { - - } - public void addActionListener() { //添加监视器 - item11.addActionListener(this); - item12.addActionListener(this); - item13.addActionListener(this); - item14.addActionListener(this); - item15.addActionListener(this); - item21.addActionListener(this); - item22.addActionListener(this); - item23.addActionListener(this); - item24.addActionListener(this); - item25.addActionListener(this); + itemNew.addActionListener(this); + itemOpen.addActionListener(this); + itemSave.addActionListener(this); + itemSaveTo.addActionListener(this); + itemQuit.addActionListener(this); + itemRevoke.addActionListener(this); + itemCut.addActionListener(this); + itemCopy.addActionListener(this); + itemPaste.addActionListener(this); + itemDelete.addActionListener(this); item26.addActionListener(this); - item31.addActionListener(this); - item41.addActionListener(this); - item51.addActionListener(this); - item52.addActionListener(this); + itemWordWrap.addActionListener(this); + itemStatus.addActionListener(this); + itemCheckHelp.addActionListener(this); + itemAbout.addActionListener(this); } + + +@Override +public void actionPerformed(ActionEvent e) { + if(e.getSource()==itemAbout) + new About(); + else if(e.getSource()==itemNew) + textShow.setText(" "); + if(e.getSource()==itemOpen) + openFile(); } - + + + void openFile() { + File file=null; + int result; + fileChooser=new JFileChooser("C:\\"); + fileChooser.setApproveButtonToolTipText("保存"); + fileChooser.setDialogTitle("保存文件"); + result=fileChooser.showOpenDialog(rootPane); + if(result==JFileChooser.APPROVE_OPTION) + file=fileChooser.getSelectedFile(); + try { + OutputStreamWriter write=new OutputStreamWriter(new FileOutputStream(file),"utf-8"); + } + + +} +} + + -- Gitee From c6126fd907ecde95cbd2b0ae5ac991ae6e577893 Mon Sep 17 00:00:00 2001 From: wilkins <422341050@qq.com> Date: Thu, 3 Jun 2021 11:24:21 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E6=89=93?= =?UTF-8?q?=E5=BC=80=E6=96=87=E4=BB=B6=EF=BC=8C=E4=BF=9D=E5=AD=98=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E7=9B=91=E8=A7=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/TextEditor.java | 54 +++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/src/java2020spring/TextEditor.java b/src/java2020spring/TextEditor.java index fde6de3..9868841 100644 --- a/src/java2020spring/TextEditor.java +++ b/src/java2020spring/TextEditor.java @@ -111,6 +111,10 @@ public void actionPerformed(ActionEvent e) { textShow.setText(" "); if(e.getSource()==itemOpen) openFile(); + else if(e.getSource()==itemSave) + saveFile(); + else if(e.getSource()==itemSaveTo) + saveTo(); } @@ -118,18 +122,58 @@ public void actionPerformed(ActionEvent e) { File file=null; int result; fileChooser=new JFileChooser("C:\\"); - fileChooser.setApproveButtonToolTipText("保存"); - fileChooser.setDialogTitle("保存文件"); + fileChooser.setApproveButtonToolTipText("确定"); + fileChooser.setDialogTitle("打开文件"); result=fileChooser.showOpenDialog(rootPane); if(result==JFileChooser.APPROVE_OPTION) file=fileChooser.getSelectedFile(); + if(file.isFile()&&file.exists()) { + BufferedReader reader=null; try { - OutputStreamWriter write=new OutputStreamWriter(new FileOutputStream(file),"utf-8"); + InputStreamReader inputStreamReader=new InputStreamReader(new FileInputStream(file),"UTF-8"); + reader=new BufferedReader(inputStreamReader); + String readline=""; + while ((readline=reader.readLine())!=null) + textShow.append(readline+'\n'); + reader.close(); } + catch(IOException e) { + e.printStackTrace(); + } + } + } + + void saveFile() { + File file =null; + int result; + fileChooser=new JFileChooser("C:\\"); + fileChooser.setApproveButtonToolTipText("保存"); + fileChooser.setDialogTitle("保存文件"); + result=fileChooser.showOpenDialog(rootPane); + if(result==JFileChooser.APPROVE_OPTION) + file=fileChooser.getSelectedFile(); + try { + OutputStreamWriter outputStreamWriter=new OutputStreamWriter(new FileOutputStream(file),"UTF-8"); + BufferedWriter bufferWriter=new BufferedWriter(outputStreamWriter); + String content=textShow.getText(); + bufferWriter.write(content); + bufferWriter.close(); + } + catch(IOException e) { + e.printStackTrace(); + } + } + + void saveTo() { + + } +} -} -} + + + + -- Gitee From 6274b7307a317c6c1236ae45c611bfab5b01ed04 Mon Sep 17 00:00:00 2001 From: wilkins <422341050@qq.com> Date: Tue, 8 Jun 2021 16:31:22 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E6=9C=AA=E7=9F=A5?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E6=A1=86=E6=97=A0=E6=B3=95=E6=89=A7=E8=A1=8C=EF=BC=8C=E6=89=80?= =?UTF-8?q?=E4=BB=A5=E5=B0=86void=20main=E6=95=B4=E5=90=88=E8=87=B3TextEdi?= =?UTF-8?q?tor=E9=87=8C=E3=80=82=20=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=8F=A6?= =?UTF-8?q?=E5=AD=98=E4=B8=BA=EF=BC=8C=E9=80=80=E5=87=BA=EF=BC=8C=E6=92=A4?= =?UTF-8?q?=E9=94=80=EF=BC=8C=E5=89=AA=E5=88=87=EF=BC=8C=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=EF=BC=8C=E9=BB=8F=E8=B4=B4=EF=BC=8C=E5=88=A0=E9=99=A4=EF=BC=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=8D=A2=E8=A1=8C=EF=BC=8C=E5=B8=AE=E5=8A=A9?= =?UTF-8?q?=E7=9A=84=E7=9B=91=E8=A7=86=E5=99=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/CheckHelp.java | 21 ++++++++ src/java2020spring/TextEditor.java | 60 +++++++++++++++++++-- src/java2020spring/TextEditorMainClass.java | 14 ----- 3 files changed, 77 insertions(+), 18 deletions(-) create mode 100644 src/java2020spring/CheckHelp.java delete mode 100644 src/java2020spring/TextEditorMainClass.java diff --git a/src/java2020spring/CheckHelp.java b/src/java2020spring/CheckHelp.java new file mode 100644 index 0000000..dc51a60 --- /dev/null +++ b/src/java2020spring/CheckHelp.java @@ -0,0 +1,21 @@ +package java2020spring; +import javax.swing.*; +import java.awt.*; +public class CheckHelp extends JFrame{ + public CheckHelp() { + this.setTitle("查看帮助"); + this.setSize(500, 300); + this.setLocation(200, 300); + this.setResizable(false); + this.setVisible(true); + this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); + Container c=this.getContentPane(); + c.setLayout(new GridLayout(5,0)); + JLabel label1=new JLabel("菜单可选择功能"); + JLabel label2=new JLabel("可自动换行"); + JLabel label3=new JLabel("可右键唤出编辑菜单"); + c.add(label1); + c.add(label2); + c.add(label3); + } +} diff --git a/src/java2020spring/TextEditor.java b/src/java2020spring/TextEditor.java index 9868841..c052550 100644 --- a/src/java2020spring/TextEditor.java +++ b/src/java2020spring/TextEditor.java @@ -1,5 +1,7 @@ package java2020spring; import javax.swing.*; +import javax.swing.undo.UndoManager; + import java.awt.*; import java.awt.event.*; import java.io.*; @@ -9,12 +11,13 @@ public class TextEditor extends JFrame implements ActionListener{ JMenu menuFile,menuEditor,menuFormat,menuCheck,menuHelp; JMenuItem itemNew,itemOpen,itemSave,itemSaveTo,itemQuit; JMenuItem itemRevoke,itemCut,itemCopy,itemPaste,itemDelete,item26; - JMenuItem itemWordWrap; + JRadioButtonMenuItem itemWordWrap; JMenuItem itemStatus; JMenuItem itemCheckHelp,itemAbout; JTextArea textShow; JScrollPane scroll; JFileChooser fileChooser; + UndoManager undoManager; public TextEditor() { editMenuBar(); @@ -53,6 +56,7 @@ public class TextEditor extends JFrame implements ActionListener{ menuFile.add(itemSaveTo); menuFile.add(itemQuit); itemRevoke=new JMenuItem("撤销"); + undoManager=new UndoManager(); itemCut=new JMenuItem("剪切"); itemCopy=new JMenuItem("复制"); itemPaste=new JMenuItem("粘贴"); @@ -64,7 +68,7 @@ public class TextEditor extends JFrame implements ActionListener{ menuEditor.add(itemPaste); menuEditor.add(itemDelete); menuEditor.add(item26); - itemWordWrap=new JMenuItem("自动换行"); + itemWordWrap=new JRadioButtonMenuItem("自动换行()",false); menuFormat.add(itemWordWrap); itemStatus=new JMenuItem("状态栏"); menuCheck.add(itemStatus); @@ -99,7 +103,8 @@ public class TextEditor extends JFrame implements ActionListener{ itemWordWrap.addActionListener(this); itemStatus.addActionListener(this); itemCheckHelp.addActionListener(this); - itemAbout.addActionListener(this); + itemAbout.addActionListener(this); + textShow.getDocument().addUndoableEditListener(undoManager); } @@ -115,6 +120,33 @@ public void actionPerformed(ActionEvent e) { saveFile(); else if(e.getSource()==itemSaveTo) saveTo(); + else if(e.getSource()==itemQuit) + System.exit(0); + else if(e.getSource()==itemRevoke) { + if(undoManager.canUndo()) + undoManager.undo(); + else + JOptionPane.showMessageDialog(null,"无法撤销","警告",JOptionPane.WARNING_MESSAGE); + } + + else if(e.getSource()==itemCut) + textShow.cut(); + else if(e.getSource()==itemCopy) + textShow.copy(); + else if(e.getSource()==itemPaste) + textShow.paste(); + else if(e.getSource()==itemDelete) { + if(undoManager.canUndo()) + undoManager.undo(); + else + JOptionPane.showMessageDialog(null,"无法删除","警告",JOptionPane.WARNING_MESSAGE); + } + else if(e.getSource()==itemWordWrap) + textShow.setLineWrap(true); + else if(e.getSource()==itemCheckHelp) + new CheckHelp(); + + } @@ -165,8 +197,28 @@ public void actionPerformed(ActionEvent e) { } void saveTo() { - + JFileChooser fileChooser=new JFileChooser(); + fileChooser.showOpenDialog(null); + File file=fileChooser.getSelectedFile(); + byte[] result=new byte[(int)file.length()]; + try { + FileInputStream inputStream=new FileInputStream(file); + inputStream.read(result); + String string=new String(result); + System.out.println(file.getAbsolutePath()); + System.out.println(string); + fileChooser.showSaveDialog(null); + File file2=fileChooser.getSelectedFile(); + FileOutputStream outputStream=new FileOutputStream(file2); + outputStream.write(result); + outputStream.close(); + } + catch(IOException e) { + e.printStackTrace(); + } } + + } diff --git a/src/java2020spring/TextEditorMainClass.java b/src/java2020spring/TextEditorMainClass.java deleted file mode 100644 index 337aa8e..0000000 --- a/src/java2020spring/TextEditorMainClass.java +++ /dev/null @@ -1,14 +0,0 @@ -package java2020spring; - -import javax.swing.JFrame; - -public class TextEditorMainClass { - public static void main(String args[]) { - TextEditor text=new TextEditor(); - text.setSize(800, 600); - text.setLocation(0, 0); - text.setVisible(true); - text.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - } - -} -- Gitee From 2468a6ae132269bbbd5f79b2aade3e14eb9a867a Mon Sep 17 00:00:00 2001 From: wilkins <422341050@qq.com> Date: Thu, 10 Jun 2021 10:29:14 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=BC=96=E5=86=99=E4=BA=86=E5=8F=B3?= =?UTF-8?q?=E9=94=AE=E5=94=A4=E5=87=BA=E8=8F=9C=E5=8D=95=EF=BC=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/Right.java | 98 ++++++++++++++++++++ src/java2020spring/TextEditor.java | 139 ++++++++++++++++++++++++++--- 2 files changed, 223 insertions(+), 14 deletions(-) create mode 100644 src/java2020spring/Right.java diff --git a/src/java2020spring/Right.java b/src/java2020spring/Right.java new file mode 100644 index 0000000..055a007 --- /dev/null +++ b/src/java2020spring/Right.java @@ -0,0 +1,98 @@ +package java2020spring; +import java.awt.*; +import javax.swing.*; +import java.awt.event.*; +import javax.swing.undo.UndoManager; +import java.awt.datatransfer.*; +public class Right extends JTextArea implements MouseListener{ + JPopupMenu pop=null; + JMenuItem revoke=null,copy=null,paste=null,delete=null,cut=null; + UndoManager undo=new UndoManager(); + + public Right() { + super(); + init(); + } + + void init() { + this.addMouseListener(this); + pop = new JPopupMenu(); + pop.add(copy = new JMenuItem("复制")); + pop.add(paste = new JMenuItem("粘贴")); + pop.add(cut = new JMenuItem("剪切")); + copy.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + action(e); + } + }); + paste.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + action(e); + } + }); + cut.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + action(e); + } + }); + this.add(pop); + } + + + public void action(ActionEvent e) { + String str=e.getActionCommand(); + if(str.equals(copy.getText())) + this.copy(); + else if(str.equals(paste.getText())) + this.paste(); + else if(str.equals(paste.getText())) + this.cut(); + } + + public JPopupMenu getPop() { + return pop; + } + public void setPop(JPopupMenu pop) { + this.pop=pop; + } + public boolean isClipboardString() { + boolean b=false; + Clipboard cilp=this.getToolkit().getSystemClipboard(); + Transferable content=cilp.getContents(this); + try { + if(content.getTransferData(DataFlavor.stringFlavor)instanceof String) { + b=true; + } + } + catch(Exception e) { + } + return b; + } + + public boolean isCanCopy() { + boolean b=false; + int start=this.getSelectionStart(); + int end=this.getSelectionEnd(); + if(start!=end) + b=true; + return b; + } + + public void mouseClicked(MouseEvent e) { +} + public void mouseEntered(MouseEvent e) { + } + public void mouseExited(MouseEvent e) { + } + public void mousePressed(MouseEvent e) { + if(e.getButton()==MouseEvent.BUTTON3) { + copy.setEnabled(isCanCopy()); + paste.setEnabled(isClipboardString()); + cut.setEnabled(isCanCopy()); + pop.show(this, e.getX(), e.getY()); + } + } + public void mouseReleased(MouseEvent e) { + } +} + diff --git a/src/java2020spring/TextEditor.java b/src/java2020spring/TextEditor.java index c052550..37a4417 100644 --- a/src/java2020spring/TextEditor.java +++ b/src/java2020spring/TextEditor.java @@ -1,24 +1,30 @@ package java2020spring; import javax.swing.*; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; import javax.swing.undo.UndoManager; import java.awt.*; import java.awt.event.*; import java.io.*; +import java.awt.datatransfer.*; -public class TextEditor extends JFrame implements ActionListener{ +public class TextEditor extends JFrame implements ActionListener,MouseListener,CaretListener{ JMenuBar menuBar; JMenu menuFile,menuEditor,menuFormat,menuCheck,menuHelp; JMenuItem itemNew,itemOpen,itemSave,itemSaveTo,itemQuit; JMenuItem itemRevoke,itemCut,itemCopy,itemPaste,itemDelete,item26; JRadioButtonMenuItem itemWordWrap; - JMenuItem itemStatus; + JCheckBoxMenuItem itemStatus; JMenuItem itemCheckHelp,itemAbout; JTextArea textShow; JScrollPane scroll; JFileChooser fileChooser; - UndoManager undoManager; - + UndoManager undoManager; + JPopupMenu jp=new JPopupMenu();//快捷菜单 + JMenuItem revoke,copy,paste,delete,cut; + JLabel statusLabel; + public TextEditor() { editMenuBar(); textArea(); @@ -29,10 +35,77 @@ public class TextEditor extends JFrame implements ActionListener{ this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("文本编辑器"); - - + revoke=new JMenuItem("撤销"); + cut=new JMenuItem("剪切"); + copy=new JMenuItem("复制"); + paste=new JMenuItem("粘贴"); + delete=new JMenuItem("删除"); + jp.add(revoke); + jp.addSeparator(); + jp.add(cut); + jp.add(copy); + jp.add(paste); + jp.add(delete); + revoke.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if(undoManager.canUndo()) { + undoManager.undo(); + } + } + }); + cut.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textShow.cut(); + }}); + copy.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textShow.copy(); + } + }); + paste.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textShow.paste(); + } + }); + delete.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { + textShow.replaceSelection(""); } - + }); + + textShow.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent me) { + int mode=me.getModifiers(); + if(mode==InputEvent.BUTTON3_MASK) { + jp.show(textShow,me.getX(),me.getY()); + } + } + }); + statusLabel=new JLabel("状态栏"); + add(statusLabel,BorderLayout.SOUTH); + textShow.addCaretListener(new CaretListener(){ + public void caretUpdate(CaretEvent e){ + JTextArea editArea = (JTextArea)e.getSource(); + int linenum =1; + int columnnum = 1; + try { + int caretpos = editArea.getCaretPosition(); + linenum = editArea.getLineOfOffset(caretpos); + columnnum = caretpos - editArea.getLineStartOffset(linenum); + linenum += 1; + } + catch(Exception ex) { } + updateStatus(linenum,columnnum); + } }); + updateStatus(1,1); + } + + private void updateStatus(int linenum, int columnnum) { + statusLabel.setText("第"+linenum+"行,第"+columnnum+"列"); + statusLabel.setHorizontalAlignment(JTextField.RIGHT); + + } + public void editMenuBar() { //设计菜单栏 menuBar=new JMenuBar(); menuFile=new JMenu("文件"); @@ -70,7 +143,7 @@ public class TextEditor extends JFrame implements ActionListener{ menuEditor.add(item26); itemWordWrap=new JRadioButtonMenuItem("自动换行()",false); menuFormat.add(itemWordWrap); - itemStatus=new JMenuItem("状态栏"); + itemStatus=new JCheckBoxMenuItem("状态栏"); menuCheck.add(itemStatus); itemCheckHelp=new JMenuItem("查看帮助"); itemAbout=new JMenuItem("关于记事本"); @@ -101,10 +174,10 @@ public class TextEditor extends JFrame implements ActionListener{ itemDelete.addActionListener(this); item26.addActionListener(this); itemWordWrap.addActionListener(this); - itemStatus.addActionListener(this); itemCheckHelp.addActionListener(this); itemAbout.addActionListener(this); textShow.getDocument().addUndoableEditListener(undoManager); + itemStatus.addActionListener(this); } @@ -145,9 +218,14 @@ public void actionPerformed(ActionEvent e) { textShow.setLineWrap(true); else if(e.getSource()==itemCheckHelp) new CheckHelp(); + else if(e.getSource()==itemStatus) { + if((itemStatus).getState()) + itemStatus.setVisible(true); + else itemStatus.setVisible(false); + } + } - -} + void openFile() { @@ -217,15 +295,48 @@ public void actionPerformed(ActionEvent e) { e.printStackTrace(); } } - -} +@Override +public void mouseClicked(MouseEvent e) { + // TODO 自动生成的方法存根 +} + +@Override +public void mousePressed(MouseEvent e) { + // TODO 自动生成的方法存根 +} + +@Override +public void mouseReleased(MouseEvent e) { + // TODO 自动生成的方法存根 +} +@Override +public void mouseEntered(MouseEvent e) { + // TODO 自动生成的方法存根 + +} +@Override +public void mouseExited(MouseEvent e) { + // TODO 自动生成的方法存根 + +} +@Override +public void caretUpdate(CaretEvent e) { + // TODO 自动生成的方法存根 +} + - + + + + + +} + \ No newline at end of file -- Gitee