From 0da20336f3279ead8223d2c1c98970227c12cb8a Mon Sep 17 00:00:00 2001 From: ASUS Date: Sun, 6 Jun 2021 19:05:39 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E6=96=87=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E5=A4=A7=E6=A6=82=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .settings/org.eclipse.core.resources.prefs | 2 + src/java2020spring/Notepad.java | 94 ++++++++++++++++++++++ src/java2020spring/Test.java | 2 +- 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 src/java2020spring/Notepad.java diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..26438fe --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/README.md=UTF-8 diff --git a/src/java2020spring/Notepad.java b/src/java2020spring/Notepad.java new file mode 100644 index 0000000..4c86e7f --- /dev/null +++ b/src/java2020spring/Notepad.java @@ -0,0 +1,94 @@ +package java2020spring; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +import javax.swing.JFrame; +import javax.swing.JFrame.*; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.KeyStroke; + + +public class Notepad extends JFrame { + JMenuBar menubar; + JMenu menu1,menu2,menu3,menu4,menu5; + JMenuItem menu1item1,menu1item2,menu1item3,menu1item4,menu1item5,menu2item1, + menu2item2,menu2item3,menu2item4,menu2item5,menu2item6,menu3item1,menu3item2, + menu4item1,menu5item1,menu5item2; + public Notepad() {} + public Notepad(String s,int x,int y,int w,int h) { + init(s); + setLocation(x,y); + setSize(w,h); + setVisible(true); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + } + void init(String s) { + setTitle(s); + menubar=new JMenuBar(); + menu1=new JMenu("文件(F)"); + menu2=new JMenu("编辑(E)"); + menu3=new JMenu("格式(O)"); + menu4=new JMenu("查看(V)"); + menu5=new JMenu("帮助(H)"); + menu1item1=new JMenuItem("新建(N)"); + menu1item2=new JMenuItem("打开(O)"); + menu1item3=new JMenuItem("保存(S)"); + menu1item4=new JMenuItem("另存为(A)"); + menu1item5=new JMenuItem("退出(X)"); + menu2item1=new JMenuItem("撤销(U)"); + menu2item2=new JMenuItem("剪切(T)"); + menu2item3=new JMenuItem("复制(C)"); + menu2item4=new JMenuItem("粘贴(P)"); + menu2item5=new JMenuItem("删除(D)"); + menu2item6=new JMenuItem("全选(A)"); + menu3item1=new JMenuItem("自动换行(W)"); + menu3item2=new JMenuItem("字体(F)"); + menu4item1=new JMenuItem("状态栏(A)"); + menu5item1=new JMenuItem("查看帮助(H)"); + menu5item2=new JMenuItem("关于记事本(A)"); + menu1item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); + menu1item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); + menu1item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); + menu1.add(menu1item1); + menu1.addSeparator(); + menu1.add(menu1item2); + menu1.addSeparator(); + menu1.add(menu1item3); + menu1.addSeparator(); + menu1.add(menu1item4); + menu1.addSeparator(); + menu1.add(menu1item5); + menu2.add(menu2item1); + menu2.addSeparator(); + menu2.add(menu2item2); + menu2.addSeparator(); + menu2.add(menu2item3); + menu2.addSeparator(); + menu2.add(menu2item4); + menu2.addSeparator(); + menu2.add(menu2item5); + menu2.addSeparator(); + menu2.add(menu2item6); + menu3.add(menu3item1); + menu3.addSeparator(); + menu3.add(menu3item2); + menu4.add(menu4item1); + menu5.add(menu5item1); + menu5.addSeparator(); + menu5.add(menu5item2); + menubar.add(menu1); + menubar.add(menu2); + menubar.add(menu3); + menubar.add(menu4); + menubar.add(menu5); + setJMenuBar(menubar); + + + } + + + + +} diff --git a/src/java2020spring/Test.java b/src/java2020spring/Test.java index fc09c19..aa27426 100644 --- a/src/java2020spring/Test.java +++ b/src/java2020spring/Test.java @@ -3,7 +3,7 @@ package java2020spring; public class Test { public static void main(String[] args) { - System.out.println("Hello world!"); + Notepad notepad=new Notepad("Notepad",20,20,800,800); } -- Gitee From 566d31f68f9742d38d8b25cab1b402574c1c7f95 Mon Sep 17 00:00:00 2001 From: ASUS Date: Sun, 6 Jun 2021 19:09:28 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E6=96=87=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E5=A4=A7=E6=A6=82=E9=A1=B5=E9=9D=A2=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/Notepad.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/java2020spring/Notepad.java b/src/java2020spring/Notepad.java index 4c86e7f..a0776ab 100644 --- a/src/java2020spring/Notepad.java +++ b/src/java2020spring/Notepad.java @@ -84,11 +84,5 @@ public class Notepad extends JFrame { menubar.add(menu4); menubar.add(menu5); setJMenuBar(menubar); - - } - - - - } -- Gitee From f4e586080e7b4fd2eaff9aad4d38235dfbb93861 Mon Sep 17 00:00:00 2001 From: ASUS Date: Sun, 6 Jun 2021 19:18:55 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E6=96=87=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E5=A4=A7=E8=87=B4=E9=A1=B5=E9=9D=A2=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/Notepad.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/java2020spring/Notepad.java b/src/java2020spring/Notepad.java index a0776ab..07734c7 100644 --- a/src/java2020spring/Notepad.java +++ b/src/java2020spring/Notepad.java @@ -84,5 +84,6 @@ public class Notepad extends JFrame { menubar.add(menu4); menubar.add(menu5); setJMenuBar(menubar); + } } -- Gitee From 4d5ff52ed5048709cdb56a29cc85cc9ab3501823 Mon Sep 17 00:00:00 2001 From: ASUS Date: Mon, 7 Jun 2021 23:47:49 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=89=AA=E5=88=87?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=B2=98=E8=B4=B4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/HandleListener.java | 22 ++++++++++++++++++++++ src/java2020spring/Notepad.java | 17 +++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/java2020spring/HandleListener.java diff --git a/src/java2020spring/HandleListener.java b/src/java2020spring/HandleListener.java new file mode 100644 index 0000000..c681c4f --- /dev/null +++ b/src/java2020spring/HandleListener.java @@ -0,0 +1,22 @@ +package java2020spring; +import java.awt.event.*; +import javax.swing.*; + +public class HandleListener implements ActionListener { + JTextArea text; + public void setText(JTextArea Text) { + text=Text; + } + public void actionPerformed(ActionEvent e) { + String str=e.getActionCommand(); + if(str.equals("copy")) + text.copy(); + else if(str.equals("cut")) + text.cut(); + else if(str.contentEquals("paste")) + text.paste(); + //else if(str.contentEquals("delete")) + //text.dele; + } + +} diff --git a/src/java2020spring/Notepad.java b/src/java2020spring/Notepad.java index 07734c7..ed85b3d 100644 --- a/src/java2020spring/Notepad.java +++ b/src/java2020spring/Notepad.java @@ -1,4 +1,5 @@ package java2020spring; +import java.awt.FlowLayout; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; @@ -7,25 +8,31 @@ import javax.swing.JFrame.*; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; import javax.swing.KeyStroke; public class Notepad extends JFrame { + JTextArea text; JMenuBar menubar; JMenu menu1,menu2,menu3,menu4,menu5; JMenuItem menu1item1,menu1item2,menu1item3,menu1item4,menu1item5,menu2item1, menu2item2,menu2item3,menu2item4,menu2item5,menu2item6,menu3item1,menu3item2, menu4item1,menu5item1,menu5item2; + HandleListener handleListener; public Notepad() {} public Notepad(String s,int x,int y,int w,int h) { init(s); setLocation(x,y); setSize(w,h); + setLayout(new FlowLayout()); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } void init(String s) { setTitle(s); + text=new JTextArea(40,75); menubar=new JMenuBar(); menu1=new JMenu("文件(F)"); menu2=new JMenu("编辑(E)"); @@ -51,6 +58,15 @@ public class Notepad extends JFrame { menu1item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); menu1item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); menu1item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); + menu2item2.setActionCommand("cut"); + menu2item3.setActionCommand("copy"); + menu2item4.setActionCommand("paste"); + menu2item5.setActionCommand("delete"); + handleListener=new HandleListener(); + handleListener.setText(text); + menu2item2.addActionListener(handleListener); + menu2item3.addActionListener(handleListener); + menu2item4.addActionListener(handleListener); menu1.add(menu1item1); menu1.addSeparator(); menu1.add(menu1item2); @@ -84,6 +100,7 @@ public class Notepad extends JFrame { menubar.add(menu4); menubar.add(menu5); setJMenuBar(menubar); + add(new JScrollPane(text)); } } -- Gitee From 25fea850931af23497e2aa850b4f5a3c2c99b0b6 Mon Sep 17 00:00:00 2001 From: ASUS Date: Tue, 8 Jun 2021 22:06:54 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E5=AE=8C=E6=88=90=E4=BA=86=E8=AE=B0=E4=BA=8B?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E5=A4=A7=E5=A4=9A=E6=95=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=B7=AE=E4=BB=A3=E7=A0=81=E7=9A=84=E6=95=B4=E5=90=88?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=92=8C=E7=BB=86=E8=8A=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/HFile.java | 84 +++++++ src/java2020spring/HandleListener.java | 7 +- src/java2020spring/Notepad.java | 320 ++++++++++++++++++++++++- src/java2020spring/setFont.java | 151 ++++++++++++ 4 files changed, 558 insertions(+), 4 deletions(-) create mode 100644 src/java2020spring/HFile.java create mode 100644 src/java2020spring/setFont.java diff --git a/src/java2020spring/HFile.java b/src/java2020spring/HFile.java new file mode 100644 index 0000000..9075e50 --- /dev/null +++ b/src/java2020spring/HFile.java @@ -0,0 +1,84 @@ +package java2020spring; + + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JTextArea; +import javax.swing.filechooser.FileNameExtensionFilter; + +public class HFile { + + public void openFile(JFrame f,JTextArea textArea) { + // 创建一个默认的文件选取器 + JFileChooser fileChooser = new JFileChooser(); + // 设置默认显示的文件夹为当前文件夹 + fileChooser.setCurrentDirectory(new File(".")); + // 设置文件选择的模式(只选文件、只选文件夹、文件和文件均可选) + fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + // 设置是否允许多选 + fileChooser.setMultiSelectionEnabled(false); + // 设置默认使用的文件过滤器 + fileChooser.setFileFilter(new FileNameExtensionFilter("txt(*.txt)", "txt")); + // 打开文件选择框 + int result = fileChooser.showOpenDialog(f); + if(result==1) + return ; + if (result == JFileChooser.APPROVE_OPTION) { + try { + textArea.setText(""); + File file = fileChooser.getSelectedFile(); + FileInputStream fis=new FileInputStream(file); + try{ + //读取数据,并将读取到的数据存储到数组中 + byte[] data = new byte[1024]; //数据存储的数组 + int i = fis.read(data); + //解析数据 + String s = new String(data,0,i); + textArea.append(s); + }catch(Exception e){ + e.printStackTrace(); + }finally{ + try{ + fis.close(); + }catch(Exception e){} + } + f.setTitle(file.getName()+" - 文本编辑器"); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public void saveFile(JFrame f,JTextArea textArea) { + // 创建一个默认的文件选取器 + JFileChooser fileChooser = new JFileChooser(); + // 设置默认显示的文件夹为当前文件夹 + fileChooser.setCurrentDirectory(new File(".")); + // 设置打开文件选择框后默认输入的文件名 + fileChooser.setSelectedFile(new File("新建记事本.txt")); + // 打开文件选择框 + int select = fileChooser.showSaveDialog(f); + if (select == JFileChooser.APPROVE_OPTION) { + // 保存文本内容 + File file = fileChooser.getSelectedFile(); + try { + //覆盖文件式写入 + OutputStream outToFileEnd = new FileOutputStream(file); + String string = textArea.getText(); + byte[] bs = string.getBytes(); + outToFileEnd.write(bs); + outToFileEnd.close(); + f.setTitle(file.getName()+" - 文本编辑器"); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } +} + diff --git a/src/java2020spring/HandleListener.java b/src/java2020spring/HandleListener.java index c681c4f..3f5bd0b 100644 --- a/src/java2020spring/HandleListener.java +++ b/src/java2020spring/HandleListener.java @@ -8,7 +8,7 @@ public class HandleListener implements ActionListener { text=Text; } public void actionPerformed(ActionEvent e) { - String str=e.getActionCommand(); + String str =e.getActionCommand(); if(str.equals("copy")) text.copy(); else if(str.equals("cut")) @@ -16,7 +16,10 @@ public class HandleListener implements ActionListener { else if(str.contentEquals("paste")) text.paste(); //else if(str.contentEquals("delete")) - //text.dele; + //text.setText(null); + else if(str.contentEquals("wrap")) + text.setLineWrap(true); + } } diff --git a/src/java2020spring/Notepad.java b/src/java2020spring/Notepad.java index ed85b3d..c803a23 100644 --- a/src/java2020spring/Notepad.java +++ b/src/java2020spring/Notepad.java @@ -1,26 +1,55 @@ package java2020spring; +import java.awt.FileDialog; import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JFrame.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; + + import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; +import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; public class Notepad extends JFrame { + protected static final JFrame Notepad = null; + private int flagFile=0; JTextArea text; JMenuBar menubar; JMenu menu1,menu2,menu3,menu4,menu5; JMenuItem menu1item1,menu1item2,menu1item3,menu1item4,menu1item5,menu2item1, - menu2item2,menu2item3,menu2item4,menu2item5,menu2item6,menu3item1,menu3item2, + menu2item2,menu2item3,menu2item4,menu2item5,menu2item6,menu3item2, menu4item1,menu5item1,menu5item2; + JCheckBoxMenuItem menu3item1; HandleListener handleListener; + + //右键弹出菜单项 + JPopupMenu popupMenu; + JMenuItem popupMenu_Undo,popupMenu_Cut,popupMenu_Copy,popupMenu_Paste,popupMenu_Delete,popupMenu_SelectAll; + public Notepad() {} public Notepad(String s,int x,int y,int w,int h) { init(s); @@ -50,7 +79,7 @@ public class Notepad extends JFrame { menu2item4=new JMenuItem("粘贴(P)"); menu2item5=new JMenuItem("删除(D)"); menu2item6=new JMenuItem("全选(A)"); - menu3item1=new JMenuItem("自动换行(W)"); + menu3item1=new JCheckBoxMenuItem("自动换行(W)"); menu3item2=new JMenuItem("字体(F)"); menu4item1=new JMenuItem("状态栏(A)"); menu5item1=new JMenuItem("查看帮助(H)"); @@ -58,15 +87,19 @@ public class Notepad extends JFrame { menu1item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); menu1item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); menu1item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); + menu1item2.setActionCommand("open"); menu2item2.setActionCommand("cut"); menu2item3.setActionCommand("copy"); menu2item4.setActionCommand("paste"); menu2item5.setActionCommand("delete"); + //menu3item1.setActionCommand("wrap"); handleListener=new HandleListener(); handleListener.setText(text); + menu1item2.addActionListener(handleListener); menu2item2.addActionListener(handleListener); menu2item3.addActionListener(handleListener); menu2item4.addActionListener(handleListener); + //menu3item1.addActionListener(handleListener); menu1.add(menu1item1); menu1.addSeparator(); menu1.add(menu1item2); @@ -102,5 +135,288 @@ public class Notepad extends JFrame { setJMenuBar(menubar); add(new JScrollPane(text)); + + //设置监听器 + //字体设置的监听器 + menu3item2.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new setFont(Notepad,text); + } + }); + //设置文本框内容改变的监听器 + text.getDocument().addDocumentListener(new DocumentListener() { + @Override + public void removeUpdate(DocumentEvent e) { + flagFile=1; + } + @Override + public void insertUpdate(DocumentEvent e) { + flagFile=1; + } + @Override + public void changedUpdate(DocumentEvent e) { + // TODO 自动生成的方法存根 + } + }); + + //新建文件的监听器 + menu1item1.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + HFile hFile=new HFile(); + if(flagFile==1){ + int result=JOptionPane.showConfirmDialog(Notepad, + "是否保存更改?", + "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text);//另存为 + + }else if(result==JOptionPane.NO_OPTION){ + text.setText(""); + } + flagFile=0; + } + else { + text.setText(""); + Notepad.setTitle("新建记事本"); + } + } + }); + + //打开文件的监听器 + menu1item2.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + HFile hFile=new HFile(); + if(flagFile==1) { + int result=JOptionPane.showConfirmDialog(Notepad, + "是否保存更改?", + "记事本-保存", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text); + flagFile=0; + } + else if(result==JOptionPane.NO_OPTION) + flagFile=0; + } + else if(flagFile==0) { + hFile.openFile(Notepad, text); + } + + } + }); + //保存文件的监听器 + menu1item3.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new HFile().saveFile(Notepad, text); + flagFile=0; + } + }); + + + //窗口关闭的监听器,提示保存 + addWindowListener(new WindowAdapter() { + @Override + public void windowOpened(WindowEvent e) { + // TODO 自动生成的方法存根 + } + @Override + public void windowIconified(WindowEvent e) { + // TODO 自动生成的方法存根 + } + @Override + public void windowDeiconified(WindowEvent e) { + // TODO 自动生成的方法存根 + } + @Override + public void windowDeactivated(WindowEvent e) { + // TODO 自动生成的方法存根 + } + @Override + public void windowClosing(WindowEvent e) { + HFile hFile=new HFile(); + if(flagFile==1){ + int result=JOptionPane.showConfirmDialog(Notepad, + "是否将更改保存到新建记事本?", + "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text);//另存为 + flagFile=0; + } + } + } + @Override + public void windowClosed(WindowEvent e) { + + } + @Override + public void windowActivated(WindowEvent e) { + // TODO 自动生成的方法存根 + } + }); + + //手动点击退出的监听器 + menu1item5.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { + HFile hFile=new HFile(); + if(flagFile==1){ + int result=JOptionPane.showConfirmDialog(Notepad, + "是否将更改保存到新建记事本?", + "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text);//另存为 + flagFile=0; + } + } + System.exit(0); + } + } + ); + + //实现删除功能 + menu2item5.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + StringBuffer tmp = new StringBuffer ( text.getText()); + int start = text.getSelectionStart(); + int len = text.getSelectedText().length(); + tmp.delete( start , start+len); + text.setText(tmp.toString()); + + } + }); + + + //实现全选功能 + menu2item6.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + text.selectAll(); + } + }); + + + + + + + //另存为 + + menu1item4.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new HFile().saveFile(Notepad, text); + flagFile=0; + } + }); + + + //关于记事本的监听器 + menu5item2.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JFrame f = new JFrame("关于记事本"); + //弹出无提示图片的消息窗口 + JOptionPane.showMessageDialog( + f, + "JAVA设计性实验\n记事本\t第一版\nDesign By 刘佳钒", + "记事本", + JOptionPane.PLAIN_MESSAGE + ); + } + }); + menu5item1.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JFrame f = new JFrame("查看帮助"); + //弹出无提示图片的消息窗口 + JOptionPane.showMessageDialog( + f, + "打开的txt文档的编码应该是ANSI编码的哦,不然会出现乱码.\n" + + "如果不会操作,请打开txt文件——文件——另存为——" + + "在编码那行改为ANSI即可哦.\n" + + "其他BUG请联系作者", + "查看帮助", + JOptionPane.PLAIN_MESSAGE + ); + } + }); + + menu3item1.addActionListener(new ActionListener() { + + + @Override + public void actionPerformed(ActionEvent e) { + // TODO 自动生成的方法存根 + text.setLineWrap(true); + } + }); + + + + //创建右键弹出菜单 + popupMenu=new JPopupMenu(); + popupMenu_Undo=new JMenuItem("撤销(U)"); + popupMenu_Cut=new JMenuItem("剪切(T)"); + popupMenu_Copy=new JMenuItem("复制(C)"); + popupMenu_Paste=new JMenuItem("粘帖(P)"); + popupMenu_Delete=new JMenuItem("删除(D)"); + popupMenu_SelectAll=new JMenuItem("全选(A)"); + + popupMenu_Undo.setEnabled(false); + + //向右键菜单添加菜单项和分隔符 + popupMenu.add(popupMenu_Undo); + popupMenu.addSeparator(); + popupMenu.add(popupMenu_Cut); + popupMenu.add(popupMenu_Copy); + popupMenu.add(popupMenu_Paste); + popupMenu.add(popupMenu_Delete); + popupMenu.addSeparator(); + popupMenu.add(popupMenu_SelectAll); + + //文本编辑区注册右键菜单事件 + + // menu1item2.setActionCommand("open"); + popupMenu_Cut.setActionCommand("cut"); + popupMenu_Copy.setActionCommand("copy"); + popupMenu_Paste.setActionCommand("paste"); + //menu2item5.setActionCommand("delete"); + + popupMenu_Cut.addActionListener(handleListener); + popupMenu_Copy.addActionListener(handleListener); + popupMenu_Paste.addActionListener(handleListener); + popupMenu_Delete.addActionListener(handleListener); + popupMenu_SelectAll.addActionListener(handleListener); + + //文本编辑区注册右键菜单事件 + text.addMouseListener(new MouseAdapter() + { public void mousePressed(MouseEvent e) + { if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件 + { popupMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单 + } + + text.requestFocus();//编辑区获取焦点 + } + public void mouseReleased(MouseEvent e) + { if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件 + { popupMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单 + } + + text.requestFocus();//编辑区获取焦点 + } + });//文本编辑区注册右键菜单事件结束 + + + + + //把状态栏替换成统计字数和行数 + + + + + + } } + diff --git a/src/java2020spring/setFont.java b/src/java2020spring/setFont.java new file mode 100644 index 0000000..97ea499 --- /dev/null +++ b/src/java2020spring/setFont.java @@ -0,0 +1,151 @@ +package java2020spring; +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class setFont extends JDialog { + + public setFont(JFrame f,JTextArea textArea) { + + //获取系统字体库 + GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment(); + String[] fontNames = e.getAvailableFontFamilyNames(); + String[] fontStyle=new String[]{"常规","粗体","斜体","粗斜体"}; + Integer[] fontsize=new Integer[] {8,9,10,11,12,13,14,16,18,20,22,24,26,28,30,32,36,48,72}; + + JDialog jdlg = new JDialog(f, "字体设置", true); + jdlg.setSize(453, 325); + jdlg.setLocationRelativeTo(null); + jdlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + + + JPanel panel=new JPanel(); + panel.setLayout(null); + + JButton yes=new JButton("确定"); + JButton no=new JButton("取消"); + JButton setfontcolor=new JButton("字体颜色"); + JLabel fonts=new JLabel("字体:"); + JLabel style=new JLabel("样式:"); + JLabel size=new JLabel("大小:"); + JLabel cg=new JLabel("AaBbCc"); + + // 创建下拉列表框 + final JComboBox comboBox = new JComboBox(fontNames); + final JComboBox comboBox2=new JComboBox(fontStyle); + final JComboBox comboBox3=new JComboBox(fontsize); + + + + // 添加条目选中状态改变的监听器 + comboBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + // 只处理选中的状态 + if (e.getStateChange() == ItemEvent.SELECTED) { + cg.setFont(new Font((String) comboBox.getSelectedItem(), + cg.getFont().getStyle(), cg.getFont().getSize())); + } + } + }); + comboBox2.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(e.getStateChange()==ItemEvent.SELECTED) { + if(comboBox2.getSelectedItem().equals("常规")) { + cg.setFont(new Font(cg.getFont().getName(), Font.PLAIN, + cg.getFont().getSize())); + } + else if(comboBox2.getSelectedItem().equals("粗体")){ + cg.setFont(new Font(cg.getFont().getName(), Font.BOLD, + cg.getFont().getSize())); + } + else if(comboBox2.getSelectedItem().equals("斜体")){ + cg.setFont(new Font(cg.getFont().getName(), Font.ITALIC, + cg.getFont().getSize())); + } + else if(comboBox2.getSelectedItem().equals("粗斜体")) { + cg.setFont(new Font(cg.getFont().getName(), Font.BOLD+ Font.ITALIC, + cg.getFont().getSize())); + } + } + } + }); + comboBox3.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(e.getStateChange()==ItemEvent.SELECTED) { + cg.setFont(new Font(cg.getFont().getName(), cg.getFont().getStyle(), + (int) comboBox3.getSelectedItem())); + + } + } + }); + + setfontcolor.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Color color = JColorChooser.showDialog(f, "选取颜色", null); + // 如果用户取消或关闭窗口, 则返回的 color 为 null + if (color == null) { + return; + } + textArea.setForeground(color); + } + }); + + yes.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setFont(cg.getFont()); + jdlg.setVisible(false); + } + }); + + no.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + jdlg.setVisible(false); + } + }); + + //设置元件位置和宽高 + fonts.setBounds(20,20,45,18); + style.setBounds(190,20,45,18); + size.setBounds(313,20,45,18); + comboBox.setBounds(20,42,170,22); + comboBox2.setBounds(190,42,119,22); + comboBox3.setBounds(309, 42, 119, 22); + cg.setBounds(30,89,378,137); + setfontcolor.setBounds(20,249,102,30); + yes.setBounds(300,249,62,30); + no.setBounds(366,249,62,30); + + fonts.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + style.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + size.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + cg.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12)); + setfontcolor.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12)); + yes.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 13)); + no.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 13)); + comboBox.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + comboBox2.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + comboBox3.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + + // 设置字体下拉框为文本框的字体样式 + comboBox.setSelectedItem(textArea.getFont().getFontName()); + comboBox3.setSelectedItem(textArea.getFont().getSize()); + comboBox2.setSelectedIndex(textArea.getFont().getStyle()); + // 添加到内容面板 + panel.add(fonts); + panel.add(style); + panel.add(size); + panel.add(comboBox); + panel.add(comboBox2); + panel.add(comboBox3); + panel.add(setfontcolor); + panel.add(yes); + panel.add(no); + panel.add(cg); + + jdlg.setResizable(false); + jdlg.setContentPane(panel); + jdlg.setVisible(true); + } + } -- Gitee From 014ade3d4642eb4350e11e7dc7baa584bc7a8ffa Mon Sep 17 00:00:00 2001 From: ASUS Date: Wed, 9 Jun 2021 21:45:40 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E7=AC=AC=E5=9B=9B=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E8=AE=B0=E4=BA=8B=E6=9C=AC=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/HFile.java | 108 +++--- src/java2020spring/HandleListener.java | 59 ++- src/java2020spring/Notepad.java | 518 ++++++++++++++----------- src/java2020spring/Test.java | 2 +- src/java2020spring/setFont.java | 268 +++++++------ 5 files changed, 528 insertions(+), 427 deletions(-) diff --git a/src/java2020spring/HFile.java b/src/java2020spring/HFile.java index 9075e50..7ac9a5b 100644 --- a/src/java2020spring/HFile.java +++ b/src/java2020spring/HFile.java @@ -1,6 +1,4 @@ package java2020spring; - - import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -13,72 +11,58 @@ import javax.swing.JTextArea; import javax.swing.filechooser.FileNameExtensionFilter; public class HFile { - + public void openFile(JFrame f,JTextArea textArea) { - // 创建一个默认的文件选取器 - JFileChooser fileChooser = new JFileChooser(); - // 设置默认显示的文件夹为当前文件夹 - fileChooser.setCurrentDirectory(new File(".")); - // 设置文件选择的模式(只选文件、只选文件夹、文件和文件均可选) - fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - // 设置是否允许多选 - fileChooser.setMultiSelectionEnabled(false); - // 设置默认使用的文件过滤器 - fileChooser.setFileFilter(new FileNameExtensionFilter("txt(*.txt)", "txt")); - // 打开文件选择框 - int result = fileChooser.showOpenDialog(f); - if(result==1) - return ; - if (result == JFileChooser.APPROVE_OPTION) { - try { - textArea.setText(""); - File file = fileChooser.getSelectedFile(); - FileInputStream fis=new FileInputStream(file); - try{ - //读取数据,并将读取到的数据存储到数组中 - byte[] data = new byte[1024]; //数据存储的数组 - int i = fis.read(data); - //解析数据 - String s = new String(data,0,i); - textArea.append(s); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - try{ - fis.close(); - }catch(Exception e){} - } - f.setTitle(file.getName()+" - 文本编辑器"); - } catch (IOException e) { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setCurrentDirectory(new File(".")); + fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + fileChooser.setMultiSelectionEnabled(false); + fileChooser.setFileFilter(new FileNameExtensionFilter("txt(*.txt)", "txt")); + int result = fileChooser.showOpenDialog(f); + if(result==1) + return ; + if (result == JFileChooser.APPROVE_OPTION) { + try { + textArea.setText(""); + File file = fileChooser.getSelectedFile(); + FileInputStream fis=new FileInputStream(file); + try{ + byte[] data = new byte[1024]; + int i = fis.read(data); + String s = new String(data,0,i); + textArea.append(s); + }catch(Exception e){ + e.printStackTrace(); + }finally{ + try{ + fis.close(); + }catch(Exception e){} + } + f.setTitle(file.getName()+" - 文本编辑器"); + } catch (IOException e) { e.printStackTrace(); } - } + } } public void saveFile(JFrame f,JTextArea textArea) { - // 创建一个默认的文件选取器 - JFileChooser fileChooser = new JFileChooser(); - // 设置默认显示的文件夹为当前文件夹 - fileChooser.setCurrentDirectory(new File(".")); - // 设置打开文件选择框后默认输入的文件名 - fileChooser.setSelectedFile(new File("新建记事本.txt")); - // 打开文件选择框 - int select = fileChooser.showSaveDialog(f); - if (select == JFileChooser.APPROVE_OPTION) { - // 保存文本内容 - File file = fileChooser.getSelectedFile(); - try { - //覆盖文件式写入 - OutputStream outToFileEnd = new FileOutputStream(file); - String string = textArea.getText(); - byte[] bs = string.getBytes(); - outToFileEnd.write(bs); - outToFileEnd.close(); - f.setTitle(file.getName()+" - 文本编辑器"); - } catch (Exception e1) { - e1.printStackTrace(); - } - } + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setCurrentDirectory(new File(".")); + fileChooser.setSelectedFile(new File("新建记事本.txt")); + int select = fileChooser.showSaveDialog(f); + if (select == JFileChooser.APPROVE_OPTION) { + File file = fileChooser.getSelectedFile(); + try { + OutputStream outToFileEnd = new FileOutputStream(file); + String string = textArea.getText(); + byte[] bs = string.getBytes(); + outToFileEnd.write(bs); + outToFileEnd.close(); + f.setTitle(file.getName()+" - 文本编辑器"); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } } diff --git a/src/java2020spring/HandleListener.java b/src/java2020spring/HandleListener.java index 3f5bd0b..f0ed780 100644 --- a/src/java2020spring/HandleListener.java +++ b/src/java2020spring/HandleListener.java @@ -1,25 +1,72 @@ package java2020spring; import java.awt.event.*; import javax.swing.*; +import javax.swing.undo.UndoManager; public class HandleListener implements ActionListener { JTextArea text; + int flagWrap; + UndoManager undomg = new UndoManager(); public void setText(JTextArea Text) { text=Text; } + public void getflagWrap(int flagWrap) { + this.flagWrap =flagWrap; + } public void actionPerformed(ActionEvent e) { String str =e.getActionCommand(); + if(str.equals("copy")) text.copy(); + else if(str.equals("cut")) text.cut(); + else if(str.contentEquals("paste")) text.paste(); - //else if(str.contentEquals("delete")) - //text.setText(null); - else if(str.contentEquals("wrap")) - text.setLineWrap(true); - - } + else if(str.contentEquals("wrap")) { + if(flagWrap==0) { + text.setLineWrap(true); + flagWrap=1; + } + else if(flagWrap==1) { + text.setLineWrap(false); + flagWrap=0; + } + } + + else if(str.contentEquals("delete")) { + StringBuffer tmp = new StringBuffer ( text.getText()); + int start = text.getSelectionStart(); + int len = text.getSelectedText().length(); + tmp.delete( start , start+len); + text.setText(tmp.toString()); + } + + else if(str.contentEquals("selectAll")) { + text.selectAll(); + } + + else if(str.contentEquals("checkHelp")) {JFrame f = new JFrame("查看帮助"); + JOptionPane.showMessageDialog( + f, + "打开的txt文档的编码应该是ANSI编码的哦,不然会出现乱码.\n" + + "如果不会操作,请打开txt文件——文件——另存为——" + + "在编码那行改为ANSI即可哦.\n" + + "其他BUG请联系作者", + "查看帮助", + JOptionPane.PLAIN_MESSAGE); + } + + else if(str.contentEquals("about")) { + JFrame f = new JFrame("关于记事本"); + JOptionPane.showMessageDialog( + f, + "JAVA设计性实验\n记事本\t第一版\nDesign By 刘佳钒", + "记事本", + JOptionPane.PLAIN_MESSAGE + ); + } + } } diff --git a/src/java2020spring/Notepad.java b/src/java2020spring/Notepad.java index c803a23..cb975e9 100644 --- a/src/java2020spring/Notepad.java +++ b/src/java2020spring/Notepad.java @@ -1,12 +1,15 @@ package java2020spring; +import java.awt.BorderLayout; import java.awt.FileDialog; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.InputEvent; +import java.awt.event.InputEvent; +import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedWriter; @@ -18,15 +21,16 @@ import java.io.IOException; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFileChooser; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JFrame.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; - - +import javax.swing.undo.UndoManager; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; +import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import javax.swing.JScrollPane; @@ -37,19 +41,25 @@ import javax.swing.KeyStroke; public class Notepad extends JFrame { protected static final JFrame Notepad = null; private int flagFile=0; + int flagWrap=0,flagStatusBar=0; JTextArea text; JMenuBar menubar; + + //记事本顶部菜单项 JMenu menu1,menu2,menu3,menu4,menu5; JMenuItem menu1item1,menu1item2,menu1item3,menu1item4,menu1item5,menu2item1, menu2item2,menu2item3,menu2item4,menu2item5,menu2item6,menu3item2, - menu4item1,menu5item1,menu5item2; - JCheckBoxMenuItem menu3item1; - HandleListener handleListener; - + menu5item1,menu5item2; + JCheckBoxMenuItem menu3item1,menu4item1; + //右键弹出菜单项 - JPopupMenu popupMenu; - JMenuItem popupMenu_Undo,popupMenu_Cut,popupMenu_Copy,popupMenu_Paste,popupMenu_Delete,popupMenu_SelectAll; - + JPopupMenu popupMenu; + JMenuItem popupMenu_Undo,popupMenu_Cut,popupMenu_Copy,popupMenu_Paste,popupMenu_Delete,popupMenu_SelectAll; + + HandleListener handleListener; + JLabel label=new JLabel("继续输入一个字符得到状态栏信息"); + UndoManager undomg = new UndoManager(); + public Notepad() {} public Notepad(String s,int x,int y,int w,int h) { init(s); @@ -58,11 +68,14 @@ public class Notepad extends JFrame { setLayout(new FlowLayout()); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); + text.setLineWrap(false); } void init(String s) { setTitle(s); - text=new JTextArea(40,75); + text=new JTextArea(40,82); menubar=new JMenuBar(); + + //新建菜单项 menu1=new JMenu("文件(F)"); menu2=new JMenu("编辑(E)"); menu3=new JMenu("格式(O)"); @@ -81,25 +94,44 @@ public class Notepad extends JFrame { menu2item6=new JMenuItem("全选(A)"); menu3item1=new JCheckBoxMenuItem("自动换行(W)"); menu3item2=new JMenuItem("字体(F)"); - menu4item1=new JMenuItem("状态栏(A)"); + menu4item1=new JCheckBoxMenuItem("状态栏(A)"); menu5item1=new JMenuItem("查看帮助(H)"); menu5item2=new JMenuItem("关于记事本(A)"); + + //设置部分菜单项的快捷方式 menu1item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); menu1item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); menu1item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); + + //添加菜单项的命令 menu1item2.setActionCommand("open"); + menu2item1.setActionCommand("undo"); menu2item2.setActionCommand("cut"); menu2item3.setActionCommand("copy"); menu2item4.setActionCommand("paste"); menu2item5.setActionCommand("delete"); - //menu3item1.setActionCommand("wrap"); + menu2item6.setActionCommand("selectAll"); + menu3item1.setActionCommand("wrap"); + menu5item1.setActionCommand("checkHelp"); + menu5item2.setActionCommand("about"); + handleListener=new HandleListener(); handleListener.setText(text); + handleListener.getflagWrap(flagWrap); + + //为菜单项添加监听器 menu1item2.addActionListener(handleListener); + menu2item1.addActionListener(handleListener); menu2item2.addActionListener(handleListener); menu2item3.addActionListener(handleListener); menu2item4.addActionListener(handleListener); - //menu3item1.addActionListener(handleListener); + menu2item5.addActionListener(handleListener); + menu2item6.addActionListener(handleListener); + menu3item1.addActionListener(handleListener); + menu5item1.addActionListener(handleListener); + menu5item2.addActionListener(handleListener); + + //将菜单项添加到菜单中 menu1.add(menu1item1); menu1.addSeparator(); menu1.add(menu1item2); @@ -132,18 +164,20 @@ public class Notepad extends JFrame { menubar.add(menu3); menubar.add(menu4); menubar.add(menu5); + setJMenuBar(menubar); add(new JScrollPane(text)); - - + + //添加空白标签来实现换行 + add(new JLabel(" ")); + add(new JLabel(" ")); + add(new JLabel(" ")); + add(label); + label.setVisible(false); + + //设置监听器 - //字体设置的监听器 - menu3item2.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - new setFont(Notepad,text); - } - }); + //设置文本框内容改变的监听器 text.getDocument().addDocumentListener(new DocumentListener() { @Override @@ -160,22 +194,22 @@ public class Notepad extends JFrame { } }); - //新建文件的监听器 + //设置新建文件的监听器 menu1item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { HFile hFile=new HFile(); if(flagFile==1){ - int result=JOptionPane.showConfirmDialog(Notepad, - "是否保存更改?", - "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); - if(result==JOptionPane.OK_OPTION){ - hFile.saveFile(Notepad, text);//另存为 - - }else if(result==JOptionPane.NO_OPTION){ - text.setText(""); - } - flagFile=0; + int result=JOptionPane.showConfirmDialog(Notepad, + "是否保存更改?", + "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text);//另存为 + + }else if(result==JOptionPane.NO_OPTION){ + text.setText(""); + } + flagFile=0; } else { text.setText(""); @@ -183,41 +217,99 @@ public class Notepad extends JFrame { } } }); - - //打开文件的监听器 + + //设置打开文件的监听器 menu1item2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { HFile hFile=new HFile(); if(flagFile==1) { int result=JOptionPane.showConfirmDialog(Notepad, - "是否保存更改?", - "记事本-保存", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); - if(result==JOptionPane.OK_OPTION){ - hFile.saveFile(Notepad, text); - flagFile=0; - } - else if(result==JOptionPane.NO_OPTION) - flagFile=0; + "是否保存更改?", + "记事本-保存", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text); + flagFile=0; + } + else if(result==JOptionPane.NO_OPTION) + flagFile=0; } else if(flagFile==0) { hFile.openFile(Notepad, text); } - + } }); - //保存文件的监听器 + + //设置保存文件的监听器 menu1item3.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - new HFile().saveFile(Notepad, text); - flagFile=0; - } - }); - - - //窗口关闭的监听器,提示保存 - addWindowListener(new WindowAdapter() { + @Override + public void actionPerformed(ActionEvent e) { + new HFile().saveFile(Notepad, text); + flagFile=0; + } + }); + + //设置另存为的监听器 + + menu1item4.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new HFile().saveFile(Notepad, text); + flagFile=0; + } + }); + + //设置手动点击退出的监听器 + menu1item5.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { + HFile hFile=new HFile(); + if(flagFile==1){ + int result=JOptionPane.showConfirmDialog(Notepad, + "是否将更改保存到新建记事本?", + "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text);//另存为 + flagFile=0; + } + } + System.exit(0); + } + } + ); + + + //设置撤销操作的监听器 + menu2item1.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + text.getDocument().addUndoableEditListener(undomg); + //撤销 + + undomg.undo(); + + + } + }); + + + + //设置窗口关闭的监听器 + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + HFile hFile=new HFile(); + if(flagFile==1){ + int result=JOptionPane.showConfirmDialog(Notepad, + "是否将更改保存到新建记事本?", + "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + if(result==JOptionPane.OK_OPTION){ + hFile.saveFile(Notepad, text);//另存为 + flagFile=0; + } + } + } @Override public void windowOpened(WindowEvent e) { // TODO 自动生成的方法存根 @@ -234,189 +326,173 @@ public class Notepad extends JFrame { public void windowDeactivated(WindowEvent e) { // TODO 自动生成的方法存根 } - @Override - public void windowClosing(WindowEvent e) { - HFile hFile=new HFile(); - if(flagFile==1){ - int result=JOptionPane.showConfirmDialog(Notepad, - "是否将更改保存到新建记事本?", - "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); - if(result==JOptionPane.OK_OPTION){ - hFile.saveFile(Notepad, text);//另存为 - flagFile=0; - } - } - } + @Override public void windowClosed(WindowEvent e) { - + } @Override public void windowActivated(WindowEvent e) { // TODO 自动生成的方法存根 } }); - - //手动点击退出的监听器 - menu1item5.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e) { - HFile hFile=new HFile(); - if(flagFile==1){ - int result=JOptionPane.showConfirmDialog(Notepad, - "是否将更改保存到新建记事本?", - "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); - if(result==JOptionPane.OK_OPTION){ - hFile.saveFile(Notepad, text);//另存为 - flagFile=0; - } - } - System.exit(0); - } - } - ); - - //实现删除功能 - menu2item5.addActionListener(new ActionListener() { + + //设置状态栏监听器 + menu4item1.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - StringBuffer tmp = new StringBuffer ( text.getText()); - int start = text.getSelectionStart(); - int len = text.getSelectedText().length(); - tmp.delete( start , start+len); - text.setText(tmp.toString()); + if(flagStatusBar==0) { + text.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent e) { + int row = 0; + int col = 0; + int total=0; + int pos = text.getCaretPosition(); + try { + row = text.getLineOfOffset(pos) + 1; + col = pos-text.getLineStartOffset(row-1); + total=text.getText().length(); + }catch(Exception e1) { + e1.printStackTrace(); + } + label.setText("共"+total+"字,"+"第" + row +"行," +"第"+ col +"列 " ); + } - } + public void keyReleased(KeyEvent e) { + int row = 0; + int col = 0; + int total=0; + int pos = text.getCaretPosition(); //获得光标位置 + try { + row = text.getLineOfOffset(pos) + 1; //返回行从0算起,要+1 + col = pos-text.getLineStartOffset(row-1); + total=text.getText().length(); + }catch(Exception e1) { + e1.printStackTrace(); + } + label.setText("共"+total+"字,"+"第" + row +"行," +"第"+ col +"列 " ); + } + }); + text.addMouseListener(new MouseListener() { + + @Override + public void mousePressed(MouseEvent e) { + int row = 0; + int col = 0; + int total=0; + int pos = text.getCaretPosition(); + try { + row = text.getLineOfOffset(pos) + 1; + col = pos-text.getLineStartOffset(row-1); + total=text.getText().length(); + }catch(Exception e1) { + e1.printStackTrace(); + } + label.setText("共"+total+"字,"+"第" + row +"行," +"第"+ col +"列 " ); + + } + + @Override + public void mouseClicked(MouseEvent e) { + // TODO 自动生成的方法存根 + } + + @Override + public void mouseReleased(MouseEvent e) { + // TODO 自动生成的方法存根 + } + + @Override + public void mouseEntered(MouseEvent e) { + // TODO 自动生成的方法存根 + } + + @Override + public void mouseExited(MouseEvent e) { + // TODO 自动生成的方法存根 + } + + }); + label.setVisible(true); + flagStatusBar=1; + } + else if(flagStatusBar==1) { + label.setVisible(false); + flagStatusBar=0; + } + } }); - - - //实现全选功能 - menu2item6.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - text.selectAll(); - } - }); - - - - - - - //另存为 - - menu1item4.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - new HFile().saveFile(Notepad, text); - flagFile=0; - } - }); - - - //关于记事本的监听器 - menu5item2.addActionListener(new ActionListener() { + + //设置字体的监听器 + menu3item2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - JFrame f = new JFrame("关于记事本"); - //弹出无提示图片的消息窗口 - JOptionPane.showMessageDialog( - f, - "JAVA设计性实验\n记事本\t第一版\nDesign By 刘佳钒", - "记事本", - JOptionPane.PLAIN_MESSAGE - ); + new setFont(Notepad,text); } }); - menu5item1.addActionListener(new ActionListener() { + + + //创建右键弹出菜单 + popupMenu=new JPopupMenu(); + popupMenu_Undo=new JMenuItem("撤销(U)"); + popupMenu_Cut=new JMenuItem("剪切(T)"); + popupMenu_Copy=new JMenuItem("复制(C)"); + popupMenu_Paste=new JMenuItem("粘帖(P)"); + popupMenu_Delete=new JMenuItem("删除(D)"); + popupMenu_SelectAll=new JMenuItem("全选(A)"); + + //因右键菜单撤销操作导致功能出现错误,暂时取消撤销操作的功能 + popupMenu_Undo.setEnabled(false); + + //向右键菜单添加菜单项和分隔符 + popupMenu.add(popupMenu_Undo); + popupMenu.addSeparator(); + popupMenu.add(popupMenu_Cut); + popupMenu.add(popupMenu_Copy); + popupMenu.add(popupMenu_Paste); + popupMenu.add(popupMenu_Delete); + popupMenu.addSeparator(); + popupMenu.add(popupMenu_SelectAll); + + //文本编辑区注册右键菜单事件 + popupMenu_Cut.setActionCommand("cut"); + popupMenu_Copy.setActionCommand("copy"); + popupMenu_Paste.setActionCommand("paste"); + popupMenu_Delete.setActionCommand("delete"); + popupMenu_SelectAll.setActionCommand("selectAll"); + + popupMenu_Cut.addActionListener(handleListener); + popupMenu_Copy.addActionListener(handleListener); + popupMenu_Paste.addActionListener(handleListener); + popupMenu_Delete.addActionListener(handleListener); + popupMenu_SelectAll.addActionListener(handleListener); + + //文本编辑区注册右键菜单事件 + text.addMouseListener(new MouseAdapter() + { public void mousePressed(MouseEvent e) + { if(e.isPopupTrigger()) + { popupMenu.show(e.getComponent(),e.getX(),e.getY()); + } + + text.requestFocus(); + } + public void mouseReleased(MouseEvent e) + { if(e.isPopupTrigger()) + { popupMenu.show(e.getComponent(),e.getX(),e.getY()); + } + + text.requestFocus(); + } + }); + + popupMenu_Undo.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - JFrame f = new JFrame("查看帮助"); - //弹出无提示图片的消息窗口 - JOptionPane.showMessageDialog( - f, - "打开的txt文档的编码应该是ANSI编码的哦,不然会出现乱码.\n" - + "如果不会操作,请打开txt文件——文件——另存为——" - + "在编码那行改为ANSI即可哦.\n" - + "其他BUG请联系作者", - "查看帮助", - JOptionPane.PLAIN_MESSAGE - ); + text.getDocument().addUndoableEditListener(undomg); + undomg.undo(); } }); - - menu3item1.addActionListener(new ActionListener() { - - - @Override - public void actionPerformed(ActionEvent e) { - // TODO 自动生成的方法存根 - text.setLineWrap(true); - } - }); - - - - //创建右键弹出菜单 - popupMenu=new JPopupMenu(); - popupMenu_Undo=new JMenuItem("撤销(U)"); - popupMenu_Cut=new JMenuItem("剪切(T)"); - popupMenu_Copy=new JMenuItem("复制(C)"); - popupMenu_Paste=new JMenuItem("粘帖(P)"); - popupMenu_Delete=new JMenuItem("删除(D)"); - popupMenu_SelectAll=new JMenuItem("全选(A)"); - - popupMenu_Undo.setEnabled(false); - - //向右键菜单添加菜单项和分隔符 - popupMenu.add(popupMenu_Undo); - popupMenu.addSeparator(); - popupMenu.add(popupMenu_Cut); - popupMenu.add(popupMenu_Copy); - popupMenu.add(popupMenu_Paste); - popupMenu.add(popupMenu_Delete); - popupMenu.addSeparator(); - popupMenu.add(popupMenu_SelectAll); - - //文本编辑区注册右键菜单事件 - - // menu1item2.setActionCommand("open"); - popupMenu_Cut.setActionCommand("cut"); - popupMenu_Copy.setActionCommand("copy"); - popupMenu_Paste.setActionCommand("paste"); - //menu2item5.setActionCommand("delete"); - - popupMenu_Cut.addActionListener(handleListener); - popupMenu_Copy.addActionListener(handleListener); - popupMenu_Paste.addActionListener(handleListener); - popupMenu_Delete.addActionListener(handleListener); - popupMenu_SelectAll.addActionListener(handleListener); - - //文本编辑区注册右键菜单事件 - text.addMouseListener(new MouseAdapter() - { public void mousePressed(MouseEvent e) - { if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件 - { popupMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单 - } - - text.requestFocus();//编辑区获取焦点 - } - public void mouseReleased(MouseEvent e) - { if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件 - { popupMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单 - } - - text.requestFocus();//编辑区获取焦点 - } - });//文本编辑区注册右键菜单事件结束 - - - - - //把状态栏替换成统计字数和行数 - - - - - - + } } - + diff --git a/src/java2020spring/Test.java b/src/java2020spring/Test.java index aa27426..baf2ed6 100644 --- a/src/java2020spring/Test.java +++ b/src/java2020spring/Test.java @@ -3,7 +3,7 @@ package java2020spring; public class Test { public static void main(String[] args) { - Notepad notepad=new Notepad("Notepad",20,20,800,800); + Notepad notepad=new Notepad("Notepad",20,20,850,900); } diff --git a/src/java2020spring/setFont.java b/src/java2020spring/setFont.java index 97ea499..72bf2c5 100644 --- a/src/java2020spring/setFont.java +++ b/src/java2020spring/setFont.java @@ -4,148 +4,142 @@ import java.awt.event.*; import javax.swing.*; public class setFont extends JDialog { - - public setFont(JFrame f,JTextArea textArea) { - - //获取系统字体库 - GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment(); - String[] fontNames = e.getAvailableFontFamilyNames(); - String[] fontStyle=new String[]{"常规","粗体","斜体","粗斜体"}; - Integer[] fontsize=new Integer[] {8,9,10,11,12,13,14,16,18,20,22,24,26,28,30,32,36,48,72}; - - JDialog jdlg = new JDialog(f, "字体设置", true); - jdlg.setSize(453, 325); - jdlg.setLocationRelativeTo(null); - jdlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - - - JPanel panel=new JPanel(); - panel.setLayout(null); - - JButton yes=new JButton("确定"); - JButton no=new JButton("取消"); - JButton setfontcolor=new JButton("字体颜色"); - JLabel fonts=new JLabel("字体:"); - JLabel style=new JLabel("样式:"); - JLabel size=new JLabel("大小:"); - JLabel cg=new JLabel("AaBbCc"); - - // 创建下拉列表框 - final JComboBox comboBox = new JComboBox(fontNames); - final JComboBox comboBox2=new JComboBox(fontStyle); - final JComboBox comboBox3=new JComboBox(fontsize); + public setFont(JFrame f,JTextArea textArea) { + //获取系统字体库 + GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment(); + String[] fontNames = e.getAvailableFontFamilyNames(); + String[] fontStyle=new String[]{"常规","粗体","斜体","粗斜体"}; + Integer[] fontsize=new Integer[] {8,9,10,11,12,13,14,16,18,20,22,24,26,28,30,32,36,48,72}; - - - // 添加条目选中状态改变的监听器 - comboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - // 只处理选中的状态 - if (e.getStateChange() == ItemEvent.SELECTED) { - cg.setFont(new Font((String) comboBox.getSelectedItem(), - cg.getFont().getStyle(), cg.getFont().getSize())); - } - } - }); - comboBox2.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - if(e.getStateChange()==ItemEvent.SELECTED) { - if(comboBox2.getSelectedItem().equals("常规")) { - cg.setFont(new Font(cg.getFont().getName(), Font.PLAIN, - cg.getFont().getSize())); - } - else if(comboBox2.getSelectedItem().equals("粗体")){ - cg.setFont(new Font(cg.getFont().getName(), Font.BOLD, - cg.getFont().getSize())); - } - else if(comboBox2.getSelectedItem().equals("斜体")){ - cg.setFont(new Font(cg.getFont().getName(), Font.ITALIC, - cg.getFont().getSize())); - } - else if(comboBox2.getSelectedItem().equals("粗斜体")) { - cg.setFont(new Font(cg.getFont().getName(), Font.BOLD+ Font.ITALIC, - cg.getFont().getSize())); - } - } + JDialog jdlg = new JDialog(f, "字体设置", true); + jdlg.setSize(453, 325); + jdlg.setLocationRelativeTo(null); + jdlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + + JPanel panel=new JPanel(); + panel.setLayout(null); + + JButton yes=new JButton("确定"); + JButton no=new JButton("取消"); + JButton setfontcolor=new JButton("字体颜色"); + JLabel fonts=new JLabel("字体:"); + JLabel style=new JLabel("样式:"); + JLabel size=new JLabel("大小:"); + JLabel cg=new JLabel("AaBbCc"); + + // 创建下拉列表框 + final JComboBox comboBox = new JComboBox(fontNames); + final JComboBox comboBox2=new JComboBox(fontStyle); + final JComboBox comboBox3=new JComboBox(fontsize); + + // 添加条目选中状态改变的监听器 + comboBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + cg.setFont(new Font((String) comboBox.getSelectedItem(), + cg.getFont().getStyle(), cg.getFont().getSize())); } - }); - comboBox3.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - if(e.getStateChange()==ItemEvent.SELECTED) { - cg.setFont(new Font(cg.getFont().getName(), cg.getFont().getStyle(), - (int) comboBox3.getSelectedItem())); - + } + }); + comboBox2.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(e.getStateChange()==ItemEvent.SELECTED) { + if(comboBox2.getSelectedItem().equals("常规")) { + cg.setFont(new Font(cg.getFont().getName(), Font.PLAIN, + cg.getFont().getSize())); } - } - }); - - setfontcolor.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Color color = JColorChooser.showDialog(f, "选取颜色", null); - // 如果用户取消或关闭窗口, 则返回的 color 为 null - if (color == null) { - return; + else if(comboBox2.getSelectedItem().equals("粗体")){ + cg.setFont(new Font(cg.getFont().getName(), Font.BOLD, + cg.getFont().getSize())); + } + else if(comboBox2.getSelectedItem().equals("斜体")){ + cg.setFont(new Font(cg.getFont().getName(), Font.ITALIC, + cg.getFont().getSize())); + } + else if(comboBox2.getSelectedItem().equals("粗斜体")) { + cg.setFont(new Font(cg.getFont().getName(), Font.BOLD+ Font.ITALIC, + cg.getFont().getSize())); } - textArea.setForeground(color); } - }); - - yes.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - textArea.setFont(cg.getFont()); - jdlg.setVisible(false); + } + }); + comboBox3.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(e.getStateChange()==ItemEvent.SELECTED) { + cg.setFont(new Font(cg.getFont().getName(), cg.getFont().getStyle(), + (int) comboBox3.getSelectedItem())); + } - }); - - no.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - jdlg.setVisible(false); + } + }); + + setfontcolor.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Color color = JColorChooser.showDialog(f, "选取颜色", null); + if (color == null) { + return; } - }); - - //设置元件位置和宽高 - fonts.setBounds(20,20,45,18); - style.setBounds(190,20,45,18); - size.setBounds(313,20,45,18); - comboBox.setBounds(20,42,170,22); - comboBox2.setBounds(190,42,119,22); - comboBox3.setBounds(309, 42, 119, 22); - cg.setBounds(30,89,378,137); - setfontcolor.setBounds(20,249,102,30); - yes.setBounds(300,249,62,30); - no.setBounds(366,249,62,30); - - fonts.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); - style.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); - size.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); - cg.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12)); - setfontcolor.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12)); - yes.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 13)); - no.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 13)); - comboBox.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); - comboBox2.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); - comboBox3.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); - - // 设置字体下拉框为文本框的字体样式 - comboBox.setSelectedItem(textArea.getFont().getFontName()); - comboBox3.setSelectedItem(textArea.getFont().getSize()); - comboBox2.setSelectedIndex(textArea.getFont().getStyle()); - // 添加到内容面板 - panel.add(fonts); - panel.add(style); - panel.add(size); - panel.add(comboBox); - panel.add(comboBox2); - panel.add(comboBox3); - panel.add(setfontcolor); - panel.add(yes); - panel.add(no); - panel.add(cg); - - jdlg.setResizable(false); - jdlg.setContentPane(panel); - jdlg.setVisible(true); - } + textArea.setForeground(color); + } + }); + + yes.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setFont(cg.getFont()); + jdlg.setVisible(false); + } + }); + + no.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + jdlg.setVisible(false); + } + }); + + //设置元件位置和宽高 + fonts.setBounds(20,20,45,18); + style.setBounds(190,20,45,18); + size.setBounds(313,20,45,18); + comboBox.setBounds(20,42,170,22); + comboBox2.setBounds(190,42,119,22); + comboBox3.setBounds(309, 42, 119, 22); + cg.setBounds(30,89,378,137); + setfontcolor.setBounds(20,249,102,30); + yes.setBounds(300,249,62,30); + no.setBounds(366,249,62,30); + + fonts.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + style.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + size.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + cg.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12)); + setfontcolor.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12)); + yes.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 13)); + no.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 13)); + comboBox.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + comboBox2.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + comboBox3.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 16)); + + // 设置字体下拉框为文本框的字体样式 + comboBox.setSelectedItem(textArea.getFont().getFontName()); + comboBox3.setSelectedItem(textArea.getFont().getSize()); + comboBox2.setSelectedIndex(textArea.getFont().getStyle()); + + // 添加到内容面板 + panel.add(fonts); + panel.add(style); + panel.add(size); + panel.add(comboBox); + panel.add(comboBox2); + panel.add(comboBox3); + panel.add(setfontcolor); + panel.add(yes); + panel.add(no); + panel.add(cg); + + jdlg.setResizable(false); + jdlg.setContentPane(panel); + jdlg.setVisible(true); } +} -- Gitee From b31694962a40236594d8291dff70f97eed1f485b Mon Sep 17 00:00:00 2001 From: ASUS Date: Thu, 10 Jun 2021 14:16:04 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E7=AC=AC=E4=BA=94=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=20=E6=96=87=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/HandleListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java2020spring/HandleListener.java b/src/java2020spring/HandleListener.java index f0ed780..7ce2eae 100644 --- a/src/java2020spring/HandleListener.java +++ b/src/java2020spring/HandleListener.java @@ -63,7 +63,7 @@ public class HandleListener implements ActionListener { JFrame f = new JFrame("关于记事本"); JOptionPane.showMessageDialog( f, - "JAVA设计性实验\n记事本\t第一版\nDesign By 刘佳钒", + "JAVA设计性实验\n记事本\t第一版\nDesigned By 刘佳钒", "记事本", JOptionPane.PLAIN_MESSAGE ); -- Gitee