From 36ac23fc3a91bd04df4c5a04b3cb7078f9aaec00 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Sun, 5 Jun 2022 18:33:22 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=90=84=E4=B8=AA?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=9A=84=E5=8F=98=E9=87=8F=E5=90=8D=E5=92=8C?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=B8=BB=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Main.java | 6 +++++ src/java2022spring/Note.java | 43 ++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 src/java2022spring/Main.java create mode 100644 src/java2022spring/Note.java diff --git a/src/java2022spring/Main.java b/src/java2022spring/Main.java new file mode 100644 index 0000000..e8e52c9 --- /dev/null +++ b/src/java2022spring/Main.java @@ -0,0 +1,6 @@ +package java2022spring; +public class Main { + public static void main(String [] args){ + note a = new note(); + } +} diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java new file mode 100644 index 0000000..c59fe34 --- /dev/null +++ b/src/java2022spring/Note.java @@ -0,0 +1,43 @@ +package java2022spring; +import java.awt.*; +import java.awt.event.*; +import java.text.*; +import java.util.*; +import java.io.*; +import javax.swing.undo.*; +import javax.swing.border.*; +import javax.swing.*; +import javax.swing.text.*; +import javax.swing.event.*; +import java.awt.datatransfer.*; +import java.time.*; +public class Note extends JFrame implements ActionListener,DocumentListener { + JMenuBar bar; + JMenu A1,A2,A3,A4,A5; + JMenuItem A11,A12,A13,A14,A15,A21,A22,A23,A24,A25,A26,A41,A51,A52,editMenu_Undo; + JTextArea text; + JPanel pa; + JScrollPane jsc; + FileReader fr; + BufferedReader br; + FileWriter fw,fw1; + BufferedWriter bw,bw1,out; + String str=null,oldValue; + File dir,currentFile,bcwjm; + JFileChooser jfc2; + JLabel label; + JCheckBoxMenuItem A31; + //右键菜单项 + JPopupMenu youcd; + JMenuItem cx,jq,fz,zt,sc,qx; + //系统剪切板 + Toolkit toolkit=Toolkit.getDefaultToolkit(); + Clipboard clipBoard=toolkit.getSystemClipboard(); + //设置图标 + ImageIcon image; + //撤销操作 + protected UndoManager undo=new UndoManager(); + protected UndoableEditListener undoHandler=new UndoHandler(); + //判断是否是新文件 + boolean isNewFile=true; + -- Gitee From ac1f3ac7b2acc0e05c683cd3124581436a856157 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Mon, 6 Jun 2022 00:07:34 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=B8=83=E5=B1=80=EF=BC=8C=E5=B0=86=E5=90=84=E4=B8=AAJMenuItem?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BF=9B=E5=AF=B9=E5=BA=94=E7=9A=84JMenu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 112 ++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index c59fe34..673edcf 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -38,6 +38,116 @@ public class Note extends JFrame implements ActionListener,DocumentListener { //撤销操作 protected UndoManager undo=new UndoManager(); protected UndoableEditListener undoHandler=new UndoHandler(); - //判断是否是新文件 boolean isNewFile=true; + public Note() { + initGUI(); + this.setBounds(600,300,600,400); + this.setVisible(true); + setDefaultCloseOperation(3); + this.setTitle("记事本"); + image = new ImageIcon("my.jfif"); + this.setIconImage(image.getImage()); + addWindowListener(new WindowAdapter(){ + public void windowClosing(WindowEvent e){ + exitWindowChoose(); + } + }); + + checkMenuItemEnabled(); + text.requestFocus(); + } + public void initGUI(){ + bar = new JMenuBar(); + A1 = new JMenu("文件(F)"); + A1.setMnemonic('F');//设置快捷键ALT+F + A2 = new JMenu("编辑(N)"); + A2.setMnemonic('N'); + A3 = new JMenu("格式(O)"); + A3.setMnemonic('O'); + A4 = new JMenu("查看(V)"); + A4.setMnemonic('V'); + A5 = new JMenu("帮助(H)"); + A5.setMnemonic('H'); + + A11 = new JMenuItem("新建(N)"); + A11.setAccelerator(KeyStroke.getKeyStroke(78,2)); + A11.addActionListener(this); + A12 = new JMenuItem("打开(O)"); + A12.setAccelerator(KeyStroke.getKeyStroke(79,2)); + A12.addActionListener(this); + A13 = new JMenuItem("保存(S)"); + A13.setAccelerator(KeyStroke.getKeyStroke(83,2)); + A13.addActionListener(this); + A14 = new JMenuItem("另存为(A)"); + A14.addActionListener(this); + A15 = new JMenuItem("退出(X)"); + A15.addActionListener(this); + + A21 = new JMenuItem("撤销(U)"); + A21.setAccelerator(KeyStroke.getKeyStroke(90,2)); + A21.addActionListener(this); + A21.setEnabled(false); + A22 = new JMenuItem("剪切(T)"); + A22.setAccelerator(KeyStroke.getKeyStroke(88,2)); + A22.addActionListener(this); + A23 = new JMenuItem("复制(C)"); + A23.setAccelerator(KeyStroke.getKeyStroke(67,2)); + A23.addActionListener(this); + A24 = new JMenuItem("粘贴(P)"); + A24.setAccelerator(KeyStroke.getKeyStroke(86,2)); + A24.addActionListener(this); + A25 = new JMenuItem("删除(L)"); + A25.setAccelerator(KeyStroke.getKeyStroke(127,0)); + A25.addActionListener(this); + A26 = new JMenuItem("全选(A)"); + A26.setAccelerator(KeyStroke.getKeyStroke(65, 2)); + A26.addActionListener(this); + + + A31 = new JCheckBoxMenuItem("自动换行(W)"); + A31.setMnemonic('W'); + A31.setState(true); + A31.addActionListener(this); + + + A41 = new JMenuItem("状态栏(S)"); + A41.addActionListener(this); + + A51 = new JMenuItem("查看帮助(H)"); + A51.setAccelerator(KeyStroke.getKeyStroke(112,0)); + A51.addActionListener(this); + A52 = new JMenuItem("关于记事本(A)"); + A52.addActionListener(this); + + A1.add(A11); + A1.add(A12); + A1.add(A13); + A1.add(A14); + A1.add(A15); + + A2.add(A21); + A2.add(A22); + A2.add(A23); + A2.add(A24); + A2.add(A25); + A2.add(A26); + + A3.add(A31); + + A4.add(A41); + + A5.add(A51); + A5.add(A52); + bar.add(A1); + bar.add(A2); + bar.add(A3); + bar.add(A4); + bar.add(A5); + this.setJMenuBar(bar); + + text = new JTextArea(16,19); + Font font = new Font("微软雅黑",Font.BOLD,20); + text.setFont(font); + text.setEnabled(true); + } -- Gitee From ea2ccc3d0be47a5b5aa2ccb3e4c0b0370a4904a6 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Mon, 6 Jun 2022 15:31:48 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E5=B0=86=E7=8A=B6=E6=80=81=E6=A0=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAJCheckBoxMenuItem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index 673edcf..a3952bb 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -14,7 +14,7 @@ import java.time.*; public class Note extends JFrame implements ActionListener,DocumentListener { JMenuBar bar; JMenu A1,A2,A3,A4,A5; - JMenuItem A11,A12,A13,A14,A15,A21,A22,A23,A24,A25,A26,A41,A51,A52,editMenu_Undo; + JMenuItem A11,A12,A13,A14,A15,A21,A22,A23,A24,A25,A26,A51,A52,editMenu_Undo; JTextArea text; JPanel pa; JScrollPane jsc; @@ -27,6 +27,7 @@ public class Note extends JFrame implements ActionListener,DocumentListener { JFileChooser jfc2; JLabel label; JCheckBoxMenuItem A31; + JCheckBoxMenuItem A41; //右键菜单项 JPopupMenu youcd; JMenuItem cx,jq,fz,zt,sc,qx; @@ -110,8 +111,10 @@ public class Note extends JFrame implements ActionListener,DocumentListener { A31.addActionListener(this); - A41 = new JMenuItem("状态栏(S)"); + A41 = new JCheckBoxMenuItem("状态栏(S)"); A41.addActionListener(this); + A41.setMnemonic('S'); + A41.setState(true); A51 = new JMenuItem("查看帮助(H)"); A51.setAccelerator(KeyStroke.getKeyStroke(112,0)); -- Gitee From 93d843d6ef9314fb0b778cdf9bcf374896d95bf7 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Mon, 6 Jun 2022 15:35:40 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8C=BA=E4=BA=8B=E4=BB=B6=E7=9B=91=E5=90=AC=E5=92=8C=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E9=BC=A0=E6=A0=87=E5=8F=B3=E9=94=AE=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index a3952bb..1c2e1dd 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -152,5 +152,34 @@ public class Note extends JFrame implements ActionListener,DocumentListener { Font font = new Font("微软雅黑",Font.BOLD,20); text.setFont(font); text.setEnabled(true); + //添加编辑区祖册事件监听 + text.getDocument().addUndoableEditListener(undoHandler); + text.getDocument().addDocumentListener(this); + + youcd = new JPopupMenu(); + cx = new JMenuItem("撤销(U)"); + jq = new JMenuItem("剪切(T)"); + fz = new JMenuItem("复制(C)"); + zt = new JMenuItem("粘帖(P)"); + sc = new JMenuItem("删除(D)"); + qx = new JMenuItem("全选(A)"); + + cx.setEnabled(false); + + youcd.add(cx); + youcd.addSeparator(); + youcd.add(jq); + youcd.add(fz); + youcd.add(zt); + youcd.add(sc); + youcd.addSeparator(); + youcd.add(qx); + + cx.addActionListener(this); + jq.addActionListener(this); + fz.addActionListener(this); + zt.addActionListener(this); + sc.addActionListener(this); + qx.addActionListener(this); } -- Gitee From a1867a5ba7eaa003c1d0460024fac18fd9703f77 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Mon, 6 Jun 2022 18:17:25 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=A1=B9=E7=9B=91=E5=90=AC=E5=92=8C=E5=88=A4=E6=96=AD=E5=A4=8D?= =?UTF-8?q?=E5=88=B6=E7=B2=98=E8=B4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 74 ++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index 1c2e1dd..106643c 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -40,6 +40,7 @@ public class Note extends JFrame implements ActionListener,DocumentListener { protected UndoManager undo=new UndoManager(); protected UndoableEditListener undoHandler=new UndoHandler(); boolean isNewFile=true; + int a=0,b=0; public Note() { initGUI(); this.setBounds(600,300,600,400); @@ -181,5 +182,78 @@ public class Note extends JFrame implements ActionListener,DocumentListener { zt.addActionListener(this); sc.addActionListener(this); qx.addActionListener(this); + text.addMouseListener(new MouseAdapter() + { public void mousePressed(MouseEvent e) + { if(e.isPopupTrigger()) + { youcd.show(e.getComponent(),e.getX(),e.getY()); + } + checkMenuItemEnabled(); + text.requestFocus(); + } + public void mouseReleased(MouseEvent e) + { if(e.isPopupTrigger()) + { youcd.show(e.getComponent(),e.getX(),e.getY()); + } + checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性 + text.requestFocus();//编辑区获取焦点 + } + }); + pa = new JPanel(); + BorderLayout grid = new BorderLayout(); + pa.setLayout(grid); + + text.getCaret().setVisible(true); + + text.setCaretPosition(text.getText().length()); + + //JScorllPane添加滚动条 + jsc = new JScrollPane(text); + pa.add(jsc); + + oldValue=text.getText(); + this.add(pa); + + A2.addMenuListener(new MenuListener(){ + public void menuCanceled(MenuEvent e) + { checkMenuItemEnabled(); + } + public void menuDeselected(MenuEvent e) + { checkMenuItemEnabled(); + } + public void menuSelected(MenuEvent e) + { checkMenuItemEnabled(); + } + }); +} +//设置复制、粘贴等功能的可用性 + public void checkMenuItemEnabled() + { String selectText=text.getSelectedText(); + if(selectText==null) + { A22.setEnabled(false); + A23.setEnabled(false); + A25.setEnabled(false); + fz.setEnabled(false); + zt.setEnabled(false); + jq.setEnabled(false); + } + else + { A22.setEnabled(true); + A23.setEnabled(true); + A25.setEnabled(true); + fz.setEnabled(true); + zt.setEnabled(true); + jq.setEnabled(true); + } + + Transferable contents=clipBoard.getContents(this); + if(contents==null){ + A24.setEnabled(false); + zt.setEnabled(false); + } + else + { A24.setEnabled(true); + zt.setEnabled(true); + } +} } -- Gitee From ca39d6bff74c15950f6ec9f2ce74e80bb4f3d325 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 09:07:37 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E6=97=B6=E7=9A=84=E5=88=A4=E6=96=AD=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index 106643c..2bc4fd7 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -255,5 +255,80 @@ public class Note extends JFrame implements ActionListener,DocumentListener { zt.setEnabled(true); } } + + //关闭窗口时判断方法 +public void exitWindowChoose() +{ text.requestFocus(); + String str1=text.getText(); + if(str1.equals(oldValue)==true) + { System.exit(0); + } + else + { int exitChoose=JOptionPane.showConfirmDialog(this,"您的文件尚未保存,是否保存?","退出提示",JOptionPane.YES_NO_CANCEL_OPTION); + if(exitChoose==JOptionPane.YES_OPTION) + { + if(isNewFile) + { + String str=null; + JFileChooser fileChooser=new JFileChooser(); + fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + fileChooser.setApproveButtonText("确定"); + fileChooser.setDialogTitle("另存为"); + + int result=fileChooser.showSaveDialog(this); + + if(result==JFileChooser.CANCEL_OPTION) + { label.setText(" 您没有保存文件"); + return; + } + File saveFileName=fileChooser.getSelectedFile(); + + if(saveFileName==null||saveFileName.getName().equals("")) + { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE); + } + else + { try + { FileWriter fw3=new FileWriter(saveFileName); + BufferedWriter bw3=new BufferedWriter(fw3); + bw3.write(text.getText(),0,text.getText().length()); + bw3.flush(); + fw3.close(); + + isNewFile=false; + currentFile=saveFileName; + oldValue=text.getText(); + + this.setTitle(saveFileName.getName()+" - 记事本"); + label.setText(" 当前打开文件:"+saveFileName.getAbsoluteFile()); + + } + catch(IOException ioException){ + } + } + } + else + { + try + { FileWriter fw4=new FileWriter(currentFile); + BufferedWriter bw4=new BufferedWriter(fw4); + bw4.write(text.getText(),0,text.getText().length()); + bw4.flush(); + fw4.close(); + + } + catch(IOException ioException){ + } + } + System.exit(0); + + } + else if(exitChoose==JOptionPane.NO_OPTION) + { System.exit(0); + } + else + { return; + } } +} +} -- Gitee From 92bb978fb86efe374e7516a7f9629f347836acdf Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 10:45:43 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index 2bc4fd7..b3c7d61 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -330,5 +330,25 @@ public void exitWindowChoose() } } } + +//保存方法 +public void save(){ + jfc2 = new JFileChooser(); + jfc2.setDialogTitle("另存为..."); + int state=jfc2.showSaveDialog(this); + bcwjm=jfc2.getSelectedFile(); + if(state==JFileChooser.APPROVE_OPTION){ + try{ + dir=jfc2.getCurrentDirectory(); + str=jfc2.getSelectedFile().getName(); + File file = new File(dir,str); + fw = new FileWriter(file); + bw = new BufferedWriter(fw); + bw.write(text.getText()); + bw.close(); + fw.close(); + } + catch(IOException exp){} + } } -- Gitee From 7787a6ab0d652a4e53deab83616cd90ac6571582 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 10:50:38 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index b3c7d61..f9cab3a 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -333,22 +333,23 @@ public void exitWindowChoose() //保存方法 public void save(){ - jfc2 = new JFileChooser(); - jfc2.setDialogTitle("另存为..."); - int state=jfc2.showSaveDialog(this); - bcwjm=jfc2.getSelectedFile(); - if(state==JFileChooser.APPROVE_OPTION){ - try{ - dir=jfc2.getCurrentDirectory(); - str=jfc2.getSelectedFile().getName(); - File file = new File(dir,str); - fw = new FileWriter(file); - bw = new BufferedWriter(fw); - bw.write(text.getText()); - bw.close(); - fw.close(); - } - catch(IOException exp){} - } + jfc2 = new JFileChooser(); + jfc2.setDialogTitle("另存为..."); + int state=jfc2.showSaveDialog(this); + bcwjm=jfc2.getSelectedFile(); + if(state==JFileChooser.APPROVE_OPTION){ + try{ + dir=jfc2.getCurrentDirectory(); + str=jfc2.getSelectedFile().getName(); + File file = new File(dir,str); + fw = new FileWriter(file); + bw = new BufferedWriter(fw); + bw.write(text.getText()); + bw.close(); + fw.close(); + } + catch(IOException exp){} + } +} } -- Gitee From c910b63256827e07f761cf104fce2e64bd8dc5c0 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 11:21:43 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=B3=E9=94=AE?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E8=8F=9C=E5=8D=95=E7=B2=98=E8=B4=B4=E5=91=BD?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index f9cab3a..36570f5 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -161,7 +161,7 @@ public class Note extends JFrame implements ActionListener,DocumentListener { cx = new JMenuItem("撤销(U)"); jq = new JMenuItem("剪切(T)"); fz = new JMenuItem("复制(C)"); - zt = new JMenuItem("粘帖(P)"); + zt = new JMenuItem("粘贴(P)"); sc = new JMenuItem("删除(D)"); qx = new JMenuItem("全选(A)"); -- Gitee From a1d27ce0d136692b68226ff6a4ad36a3775d1143 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 11:26:06 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E5=AE=8C=E5=96=84Note=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index 36570f5..e708d13 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -351,5 +351,41 @@ public void save(){ catch(IOException exp){} } } + + + + + + + + + + + + + + + + + + + + +public void removeUpdate(DocumentEvent e) +{ A21.setEnabled(true); +} +public void insertUpdate(DocumentEvent e) +{ A21.setEnabled(true); +} +public void changedUpdate(DocumentEvent e) +{ A21.setEnabled(true); +} + +class UndoHandler implements UndoableEditListener +{ public void undoableEditHappened(UndoableEditEvent uee) + { undo.addEdit(uee.getEdit()); + } +} + } -- Gitee From b2130ce8da52258e4746741c57bfdd6c44e559c2 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 21:33:18 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9Note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java2022spring/Main.java b/src/java2022spring/Main.java index e8e52c9..e25eb35 100644 --- a/src/java2022spring/Main.java +++ b/src/java2022spring/Main.java @@ -1,6 +1,6 @@ package java2022spring; public class Main { public static void main(String [] args){ - note a = new note(); + Note a = new Note(); } } -- Gitee From efc739adaba291bc27a612bff5b805d342e94d78 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 21:33:44 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=90=84=E4=B8=AA?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 219 ++++++++++++++++++++++++++++++++--- 1 file changed, 204 insertions(+), 15 deletions(-) diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index e708d13..0eb9a2c 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -26,6 +26,7 @@ public class Note extends JFrame implements ActionListener,DocumentListener { File dir,currentFile,bcwjm; JFileChooser jfc2; JLabel label; + JLabel statusLabel; JCheckBoxMenuItem A31; JCheckBoxMenuItem A41; //右键菜单项 @@ -351,24 +352,212 @@ public void save(){ catch(IOException exp){} } } +//各个菜单方法 +public void actionPerformed(ActionEvent e){ + String str=e.getActionCommand(); + if(str.equals("新建(N)")){ + + text.requestFocus(); + String str1 = text.getText(); + boolean textIsChange = (str1.equals(oldValue))?false:true; + if(textIsChange){ + int saveChoose = JOptionPane.showConfirmDialog(this,"你的文件未保存","提示",JOptionPane.YES_NO_CANCEL_OPTION); + if(saveChoose==JOptionPane.YES_OPTION){ + String st=null; + JFileChooser file = new JFileChooser(); + file.setFileSelectionMode(JFileChooser.FILES_ONLY); + file.setDialogTitle("另存为"); + int result=file.showSaveDialog(this); + if(result==JFileChooser.CANCEL_OPTION){ + label.setText("你没有选择文件"); + return; + } + + File saveFileName=file.getSelectedFile(); + if(saveFileName==null || saveFileName.getName().equals("")) + { JOptionPane.showMessageDialog(this,"不合法文件名","不合法文件名",JOptionPane.ERROR_MESSAGE); + } + else{ + try + { FileWriter fw2=new FileWriter(saveFileName); + BufferedWriter bw2=new BufferedWriter(fw2); + bw2.write(text.getText(),0,text.getText().length()); + bw2.flush(); + bw2.close(); + isNewFile=false; + currentFile=saveFileName; + oldValue=text.getText(); + this.setTitle(saveFileName.getName()+" - 记事本"); + label.setText("当前打开文件:"+saveFileName.getAbsoluteFile()); + } + catch (IOException ioException) + { + } + } + } + else if(saveChoose==JOptionPane.NO_OPTION) + { text.replaceRange("",0,text.getText().length()); + label.setText("新建文件"); + this.setTitle("无标题——记事本"); + isNewFile=true; + undo.discardAllEdits(); + A21.setEnabled(false); + oldValue=text.getText(); + } + else if(saveChoose==JOptionPane.CANCEL_OPTION){ + return; + } + } + else + { text.replaceRange("",0,text.getText().length()); + label.setText(" 新建文件"); + this.setTitle("无标题——记事本"); + isNewFile=true; + undo.discardAllEdits(); + A21.setEnabled(false); + oldValue=text.getText(); + } + } + + + else if(str.equals("打开(O)")){ + this.setVisible(true); + JFileChooser jfc1=new JFileChooser(); + jfc1.setDialogTitle("打开文件..."); + + jfc1.showOpenDialog(null); + + jfc1.setVisible(true); + + String filename=jfc1.getSelectedFile().getAbsolutePath(); + try{ + fr=new FileReader(filename); + br=new BufferedReader(fr); + + String s=""; + String sus=""; + while((s=br.readLine())!=null) + { + + sus+=s+"\r\n"; + } + text.setText(sus); + } + catch(Exception e1){ + e1.printStackTrace(); + } + finally + { + try { + fr.close(); + br.close(); + } catch (Exception e2) { + e2.printStackTrace(); + } + + } + + } + else if(str.equals("保存(S)")){ + + if(a==0&&b==0){ + save(); + a=1; + } + if(a==1&&b==1){ + try{ + + fw1 = new FileWriter(bcwjm); + bw1 = new BufferedWriter(fw1); + bw1.write(text.getText()); + bw1.close(); + fw1.close(); + currentFile=bcwjm; + oldValue=text.getText(); + this.setTitle(bcwjm.getName()+"记事本"); + label.setText("当前打开文件:"+bcwjm.getAbsoluteFile()); + } + catch(IOException exp){} + } + b=1; +} + else if(str.equals("另存为(A)")){ + save(); + } + else if(str.equals("退出(X)")){ + System.exit(0); + + } + else if(str.equals("撤销(U)")){ + text.requestFocus(); + if(undo.canUndo()) + { try + { undo.undo(); + } + catch (CannotUndoException ex) + { System.out.println("Unable to undo:" + ex); + } + } + if(!undo.canUndo()) + { editMenu_Undo.setEnabled(false); + } + } + else if(str.equals("剪切(T)")){ + text.cut(); + } + else if(str.equals("复制(C)")){ + + text.copy(); + } + else if(str.equals("粘贴(P)")){ + text.paste(); + } + else if(str.equals("删除(L)") || str.equals("删除(D)")){ + text.replaceSelection(null); + } + else if(str.equals("全选(A)")){ + text.selectAll(); + } - - - - - - - - - - - - - - - + else if(str.equals("自动换行(W)")){ + if(A31.getState()) + text.setLineWrap(true); + else + text.setLineWrap(false); + } + else if (str.equals("状态栏(S)")) { + if (A41.getState()) + statusLabel.setVisible(true); + else + statusLabel.setVisible(false); + } + + + else if(str.equals("查看帮助(H)")){ + try { + String url = "https://i.csdn.net/#/uc/profile"; + java.net.URI uri = java.net.URI.create(url); + java.awt.Desktop dp = java.awt.Desktop.getDesktop(); + if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) { + dp.browse(uri); + } + } catch (java.lang.NullPointerException e5) { + e5.printStackTrace(); + } catch (java.io.IOException e5) { + e5.printStackTrace(); + } + } + else if(str.equals("关于记事本(A)")){ + text.requestFocus(); + JOptionPane.showMessageDialog(this, + "这是一个具有良好人机界面的简易文本编辑器", + "我的记事本" + + ,JOptionPane.INFORMATION_MESSAGE); + } +} public void removeUpdate(DocumentEvent e) -- Gitee From 7b99a8c2eb19d316e487581a3b5dfaffbca1f127 Mon Sep 17 00:00:00 2001 From: HHHQZZZ Date: Tue, 7 Jun 2022 21:51:01 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8E=9F=E6=9C=AC?= =?UTF-8?q?=E7=9A=84Test=E7=B1=BB=EF=BC=8C=E5=9C=A8Note=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=98=BE=E7=A4=BA=E7=8A=B6=E6=80=81=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Note.java | 3 +++ src/java2022spring/Test.java | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 src/java2022spring/Test.java diff --git a/src/java2022spring/Note.java b/src/java2022spring/Note.java index 0eb9a2c..8000f23 100644 --- a/src/java2022spring/Note.java +++ b/src/java2022spring/Note.java @@ -50,6 +50,9 @@ public class Note extends JFrame implements ActionListener,DocumentListener { this.setTitle("记事本"); image = new ImageIcon("my.jfif"); this.setIconImage(image.getImage()); + // 创建和添加状态栏 + statusLabel = new JLabel("按F1获取帮助"); + this.add(statusLabel, BorderLayout.SOUTH); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ exitWindowChoose(); diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java deleted file mode 100644 index 24deb29..0000000 --- a/src/java2022spring/Test.java +++ /dev/null @@ -1,7 +0,0 @@ -package java2022spring; - -public class Test { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} -- Gitee