diff --git a/.classpath b/.classpath
deleted file mode 100644
index ac9ce57c2f4d3a99eb1868e101f3060156474663..0000000000000000000000000000000000000000
--- a/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index ae3c1726048cd06b9a143e0376ed46dd9b9a8d53..0000000000000000000000000000000000000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin/
diff --git a/.project b/.project
deleted file mode 100644
index b7e8a74e9dd98bfb5b42b70cd6033510d6823948..0000000000000000000000000000000000000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- java2022spring
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index dbc27c5dc60ef7094a88953087ea0294b6c44a38..0000000000000000000000000000000000000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=17
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=17
diff --git a/Project/src/Main.java b/Project/src/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..b18a6dcf09a0db79f4664d9bc96d6c933f8b78c3
--- /dev/null
+++ b/Project/src/Main.java
@@ -0,0 +1,975 @@
+/**
+ * @author wmstart
+ * @create 2022-05-29 23:13
+ */
+import javax.sound.sampled.Line;
+import javax.swing.*;
+import javax.swing.undo.UndoManager;
+import java.awt.*;
+import java.awt.datatransfer.Transferable;
+import java.awt.event.*;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+
+public class Main extends JFrame implements ActionListener {
+ //创建窗口
+
+ public JFrame frame1 = new JFrame("记事本");
+
+ //创建菜单条
+
+
+ JMenuBar jmenuBar = new JMenuBar();
+
+ //创建菜单组件--文件
+ JMenu FileMenu = new JMenu("文件(F)");
+
+
+ JMenuItem New = new JMenuItem("新建(N)");
+
+ JMenuItem Open = new JMenuItem("打开(O)");
+
+
+ JMenuItem Save = new JMenuItem("保存(S)");
+ JMenuItem SaveAs = new JMenuItem("另存为(A)");
+ JMenuItem Exit = new JMenuItem("退出(X)");
+ //创建编辑菜单组件
+ JMenu EditMenu = new JMenu("编辑(E)");
+ JMenuItem Cut1 = new JMenuItem("剪切(T)");
+ JMenuItem Repeal1 = new JMenuItem("撤销(Z)");
+ JMenuItem Copy1 = new JMenuItem("复制(C)");
+ JMenuItem Paste1 = new JMenuItem("粘贴(P)");
+ JMenuItem Delete1 = new JMenuItem("删除(L)");
+ JMenuItem Find = new JMenuItem("查找(F)");
+ JMenuItem CheckAll1 = new JMenuItem("全选(Q)");
+
+ JMenuItem replace=new JMenuItem("替换(R)");
+ //创建右键组件
+
+
+ JMenuItem Repeal = new JMenuItem("撤销(U)");
+ JMenuItem Cut = new JMenuItem("剪切(T)");
+
+ JMenuItem Copy = new JMenuItem("复制(C)");
+ JMenuItem Paste = new JMenuItem("粘贴(P)");
+ JMenuItem Delete = new JMenuItem("删除(L)");
+
+ JMenuItem CheckAll = new JMenuItem("全选(Q)");
+ JMenuItem Time = new JMenuItem("时间/日期(D)");
+
+
+
+ //创建菜单组件--帮助
+ JMenu helpMenu=new JMenu("帮助(H)");
+
+ JMenuItem watchHelp=new JMenuItem("查看帮助(H)");
+ JMenuItem about=new JMenuItem("关于记事本(A)");
+
+
+
+
+ //创建菜单组件--格式
+ JMenu FormatMenu = new JMenu("格式(O)");
+
+ JMenuItem TypeFace = new JMenuItem("字体(Y)");
+
+
+ JCheckBoxMenuItem line = new JCheckBoxMenuItem("自动换行(W)");
+
+
+
+
+ //创建查看菜单
+ JMenu CheckMenu =new JMenu("查看(V)");
+ JMenu theme=new JMenu("切换主题");
+ //声明右键菜单
+ JPopupMenu jPopupMenu = new JPopupMenu();
+
+ ButtonGroup poupButtonBg = new ButtonGroup();
+
+
+
+ JRadioButtonMenuItem metal = new JRadioButtonMenuItem("Metal风格");
+ JRadioButtonMenuItem nimbus = new JRadioButtonMenuItem("Nimbus风格");
+ JRadioButtonMenuItem window = new JRadioButtonMenuItem("Windows风格");
+ JRadioButtonMenuItem windows = new JRadioButtonMenuItem("Windows经典风格");
+ JRadioButtonMenuItem motif = new JRadioButtonMenuItem("Motif风格");
+
+
+ //创建文本编辑区域
+ JTextArea jTextArea ;
+ JScrollPane jScrollPane ;
+
+
+ //创建一个文件选择框
+ JFileChooser jFileChooser =null;
+
+
+ //创建一个文件输入流
+ FileReader fileReader =null;
+
+ //创建一个文件输出流
+ FileWriter fileWriter = null;
+
+ //创建一个缓冲字符输入流
+ BufferedReader bufferedReader = null;
+
+ //创建一个缓冲字符输出流
+ BufferedWriter bufferedWriter = null;
+
+ UndoManager un;
+
+ boolean f=false;
+ int w=1;
+
+ boolean isNewFile = true;
+ String oldValue;
+ File currentFile;
+ JLabel statusLabel;
+
+
+
+ public void init() {
+
+ //设置自动换行默认选中
+ line.setState(true);
+
+ //设置滚轮
+ jTextArea = new JTextArea(15, 30);
+ JScrollPane scroller = new JScrollPane(jTextArea);
+ scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ this.add(scroller, BorderLayout.CENTER);
+ jTextArea.setWrapStyleWord(true);// 设置单词在一行不足容纳时换行
+
+ //窗口规范化
+ frame1.setLocation(450,270);
+ frame1.setSize( 300,300);
+
+ jTextArea.setFont(new Font("",Font.BOLD,20));
+ jTextArea.setLineWrap(true);
+
+
+
+ //设置alt快捷键
+ FileMenu.setMnemonic('F');
+ EditMenu.setMnemonic('E');
+ FormatMenu.setMnemonic('O');
+ helpMenu.setMnemonic('H');
+ CheckMenu.setMnemonic('V');
+ //设置ctrl快捷键
+ New.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_N,InputEvent.CTRL_MASK));
+ Open.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_O,InputEvent.CTRL_MASK));
+ Save.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_S,InputEvent.CTRL_MASK));
+ SaveAs.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_A,InputEvent.CTRL_MASK));
+ Exit.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_X,InputEvent.CTRL_MASK));
+ Cut.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_Z,InputEvent.CTRL_MASK));
+ Copy.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_C,InputEvent.CTRL_MASK));
+ Paste.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_P,InputEvent.CTRL_MASK));
+ Time.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_D,InputEvent.CTRL_MASK));
+ Find.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_F,InputEvent.CTRL_MASK));
+ CheckAll.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_Q,InputEvent.CTRL_MASK));
+ Cut1.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_Z,InputEvent.CTRL_MASK));
+ Copy1.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_C,InputEvent.CTRL_MASK));
+ Paste1.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_P,InputEvent.CTRL_MASK));
+ CheckAll1.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_Q,InputEvent.CTRL_MASK));
+ Repeal.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_U,InputEvent.CTRL_MASK));
+ Repeal1.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_U,InputEvent.CTRL_MASK));
+ Delete.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_L,InputEvent.CTRL_MASK));
+ Delete1.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_L,InputEvent.CTRL_MASK));
+ Find.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_F,InputEvent.CTRL_MASK));
+ replace.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_R,InputEvent.CTRL_MASK));
+ line.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_W,InputEvent.CTRL_MASK));
+ TypeFace.setAccelerator(KeyStroke.getKeyStroke((char)KeyEvent.VK_Y,InputEvent.CTRL_MASK));
+
+ //组装文件菜单
+ FileMenu.add(New);
+ FileMenu.add(Open);
+ FileMenu.add(Save);
+ FileMenu.add(SaveAs);
+ FileMenu.add(Exit);
+
+ //组装编辑菜单
+ EditMenu.add(Repeal1);
+ EditMenu.add(Cut1);
+ EditMenu.add(Copy1);
+ EditMenu.add(Paste1);
+ EditMenu.add(Delete1);
+ EditMenu.add(Find);
+ EditMenu.add(CheckAll1);
+ EditMenu.add(Time);
+ EditMenu.add(TypeFace);
+ EditMenu.add(replace);
+
+ //组装格式菜单
+ FormatMenu.add(TypeFace);
+ FormatMenu.add(line);
+
+ //组装查看菜单
+ CheckMenu.add(theme);
+
+ theme.add(metal);
+ theme.add(nimbus);
+ theme.add(window);
+ theme.add(windows);
+ theme.add(motif);
+
+ //组装帮助菜单
+ helpMenu.add(watchHelp);
+ helpMenu.add(about);
+
+ //组装主题按钮至一个按钮组下
+ poupButtonBg.add(metal);
+ poupButtonBg.add(nimbus);
+ poupButtonBg.add(window);
+ poupButtonBg.add(windows);
+ poupButtonBg.add(motif);
+
+
+ //组装菜单条
+ jmenuBar.add(FileMenu);
+ jmenuBar.add(EditMenu);
+ jmenuBar.add(FormatMenu);
+ jmenuBar.add(CheckMenu);
+ jmenuBar.add(helpMenu);
+ //将菜单条放入到窗口中
+ frame1.setJMenuBar(jmenuBar);
+ //将文本框放入到窗口中
+ frame1.add(jTextArea);
+
+
+ //组装按钮包
+ poupButtonBg.add(metal);
+ poupButtonBg.add(nimbus);
+ poupButtonBg.add(windows);
+ poupButtonBg.add(window);
+ poupButtonBg.add(motif);
+
+
+ jPopupMenu.add(Cut);
+ jPopupMenu.addSeparator();
+ jPopupMenu.add(Repeal);
+ jPopupMenu.add(Copy);
+ jPopupMenu.add(Paste);
+ jPopupMenu.add(Delete);
+ jPopupMenu.add(CheckAll);
+
+
+ //给主题按钮设置监听器
+ ActionListener listener= new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String actionCommand=e.getActionCommand();
+ try{
+ changeFlavor(actionCommand);
+ }catch(Exception e2){
+ e2.printStackTrace();
+ }
+ }
+ };
+
+ //给功能添加监听器
+ Open.addActionListener(this);
+ Open.setActionCommand("打开");
+
+ Save.addActionListener(this);
+ Save.setActionCommand("保存");
+
+ New.addActionListener(this);
+ New.setActionCommand("新建");
+
+ Copy.addActionListener(this);
+ Copy.setActionCommand("复制");
+
+ Paste.addActionListener(this);
+ Paste.setActionCommand("粘贴");
+
+ Delete.addActionListener(this);
+ Delete.setActionCommand("删除");
+
+ CheckAll.addActionListener(this);
+ CheckAll.setActionCommand("全选");
+
+ SaveAs.addActionListener(this);
+ SaveAs.setActionCommand("另存为");
+
+ Repeal.addActionListener(this);
+ Repeal.setActionCommand("撤销");
+
+ Time.addActionListener(this);
+ Time.setActionCommand("时间/日期");
+
+
+
+ watchHelp.addActionListener(this);
+ watchHelp.setActionCommand("查看帮助");
+
+ about.addActionListener(this);
+ about.setActionCommand("关于记事本");
+
+ Find.addActionListener(this);
+ Find.setActionCommand("查找");
+
+ Cut.addActionListener(this);
+ Cut.setActionCommand("剪切");
+
+ Exit.addActionListener(this);
+ Exit.setActionCommand("退出");
+
+ line.addActionListener(this);
+ line.setActionCommand("自动换行");
+
+ Copy1.addActionListener(this);
+ Copy1.setActionCommand("复制");
+
+ Paste1.addActionListener(this);
+ Paste1.setActionCommand("粘贴");
+
+ Delete1.addActionListener(this);
+ Delete1.setActionCommand("删除");
+
+ CheckAll1.addActionListener(this);
+ CheckAll1.setActionCommand("全选");
+
+ Repeal1.addActionListener(this);
+ Repeal1.setActionCommand("撤销");
+
+ replace.addActionListener(this);
+ replace.setActionCommand("替换");
+
+ TypeFace.addActionListener(this);
+ TypeFace.setActionCommand("字体");
+
+ Cut1.addActionListener(this);
+ Cut1.setActionCommand("剪切");
+
+ Delete1.addActionListener(this);
+ Delete1.setActionCommand("删除");
+
+ //给主题按钮添加监听器
+ metal.addActionListener(listener);
+ nimbus.addActionListener(listener);
+ window.addActionListener(listener);
+ windows.addActionListener(listener);
+ motif.addActionListener(listener);
+ //关闭总窗口
+ frame1.addWindowListener(new WindowAdapter() {
+ //实现关闭弹窗提示
+ public void windowClosing(WindowEvent e) {
+ int result=JOptionPane.showConfirmDialog(null,"确定退出吗","确认",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
+ if(result==JOptionPane.OK_OPTION){
+ System.exit(0);
+ } else {
+ return;
+ }
+ }
+ });
+ frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+
+
+ frame1.pack();
+ frame1.setVisible(true);
+ //设置右键菜单
+ jTextArea.setComponentPopupMenu(jPopupMenu);
+
+ }
+
+ //设置菜单项的可用性
+ public void checkMenuItemEnabled() {
+ String selectText=jTextArea.getSelectedText();
+ if(selectText==null) {
+ Copy.setEnabled(false);
+ Cut.setEnabled(false);
+ Delete.setEnabled(false);
+ Copy1.setEnabled(false);
+ Cut1.setEnabled(false);
+ Delete1.setEnabled(false);
+ }
+ else {
+ Copy.setEnabled(true);
+ Cut.setEnabled(true);
+ Delete.setEnabled(true);
+ Copy1.setEnabled(true);
+ Cut1.setEnabled(true);
+ Delete1.setEnabled(true);
+
+ }
+ }
+
+
+
+ public static void main(String[] args) {
+ new Main().init();
+ }
+
+ //给主题按钮设置监听器
+ ActionListener listener= new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String actionCommand=e.getActionCommand();
+ try{
+ changeFlavor(actionCommand);
+ }catch(Exception e2){
+ e2.printStackTrace();
+ }
+ }
+ };
+
+ //设置其它功能的监听器
+ @Override
+ public void actionPerformed(ActionEvent e) {
+
+
+
+ //实现打开功能
+ if(e.getActionCommand().equals("打开")){
+ jFileChooser=new JFileChooser();
+ jFileChooser.setDialogTitle("打开");
+ jFileChooser.showOpenDialog(null);
+ jFileChooser.setVisible(true);
+ String address=jFileChooser.getSelectedFile().getAbsolutePath();
+ try {
+ fileReader=new FileReader(address);
+ bufferedReader=new BufferedReader(fileReader);
+ String str="";
+ String strAll="";
+ while ((str=bufferedReader.readLine())!=null){
+ strAll+=str+"\r\n";
+ }
+ jTextArea.setText(strAll);
+ }catch (FileNotFoundException e1){
+ e1.printStackTrace();
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ } finally {
+ try {
+ bufferedReader.close();
+ fileReader.close();
+ }catch (IOException e1){
+ e1.printStackTrace();
+ }
+ }
+ //实现保存功能
+ } else if (e.getActionCommand().equals("保存")) {
+ if(e.getActionCommand().equals("保存")){
+ FileDialog f=new FileDialog(frame1,"保存文件",FileDialog.SAVE);
+ f.setVisible(true);
+ String s1=f.getDirectory()+f.getFile();
+ try{
+ bufferedWriter=new BufferedWriter(new FileWriter(s1));
+ String s=jTextArea.getText();
+ bufferedWriter.write(s);
+ bufferedWriter.close();
+
+ }catch(IOException e2){
+ e2.printStackTrace();
+ }
+
+ }
+ //实现新建功能
+ } else if (e.getActionCommand().equals("新建")) {
+ jTextArea.requestFocus();
+ String currentValue = jTextArea.getText();
+ boolean isTextChange = (currentValue.equals(oldValue)) ? false : true;
+ if (isTextChange) {
+ int saveChoose = JOptionPane.showConfirmDialog(this, "您的文件尚未保存,是否保存?", "提示",
+ JOptionPane.YES_NO_CANCEL_OPTION);
+ if (saveChoose == JOptionPane.YES_OPTION) {
+ String str = null;
+ JFileChooser fileChooser = new JFileChooser();
+ fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+ fileChooser.setDialogTitle("另存为");
+ int result = fileChooser.showSaveDialog(this);
+ if (result == JFileChooser.CANCEL_OPTION) {
+ return;
+ }
+ File saveFileName = fileChooser.getSelectedFile();
+ if (saveFileName == null || saveFileName.getName().equals("")) {
+ JOptionPane.showMessageDialog(this, "不合法的文件名", "不合法的文件名", JOptionPane.ERROR_MESSAGE);
+ } else {
+ try {
+ FileWriter fw = new FileWriter(saveFileName);
+ BufferedWriter bfw = new BufferedWriter(fw);
+ bfw.write(jTextArea.getText(), 0,jTextArea.getText().length());
+ bfw.flush();
+ bfw.close();
+ isNewFile = false;
+ currentFile = saveFileName;
+ oldValue = jTextArea.getText();
+ this.setTitle(saveFileName.getName() + " - 记事本");
+ statusLabel.setText("当前打开文件:" + saveFileName.getAbsoluteFile());
+ } catch (IOException ioException) {
+ }
+ }
+ } else if (saveChoose == JOptionPane.NO_OPTION) {
+ jTextArea.replaceRange("", 0, jTextArea.getText().length());
+ statusLabel.setText(" 新建文件");
+ this.setTitle("无标题 - 记事本");
+ isNewFile = true;
+ un.discardAllEdits();
+ Repeal.setEnabled(false);
+ oldValue = jTextArea.getText();
+ } else if (saveChoose == JOptionPane.CANCEL_OPTION) {
+ return;
+ }
+ } else {
+ jTextArea.replaceRange("", 0, jTextArea.getText().length());
+ statusLabel.setText(" 新建文件");
+ this.setTitle("无标题 - 记事本");
+ isNewFile = true;
+ un.discardAllEdits();
+ Repeal.setEnabled(false);
+ oldValue = jTextArea.getText();
+ }
+
+ //添加复制功能
+ } else if (e.getActionCommand().equals("复制")) {
+ jTextArea.copy();
+ //添加粘贴功能
+ } else if (e.getActionCommand().equals("粘贴")) {
+ jTextArea.paste();
+ //添加另存为功能
+ }else if(e.getActionCommand().equals("另存为")){
+ jTextArea.requestFocus();
+ String str = null;
+ JFileChooser fileChooser = new JFileChooser();
+ fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+ fileChooser.setDialogTitle("另存为");
+ int result = fileChooser.showSaveDialog(this);
+ if (result == JFileChooser.CANCEL_OPTION) {
+ statusLabel.setText("您没有选择任何文件");
+ return;
+ }
+ File saveFileName = fileChooser.getSelectedFile();
+ if (saveFileName == null || saveFileName.getName().equals("")) {
+ JOptionPane.showMessageDialog(this, "不合法的文件名", "不合法的文件名", JOptionPane.ERROR_MESSAGE);
+ } else {
+ try {
+ FileWriter fw = new FileWriter(saveFileName);
+ BufferedWriter bfw = new BufferedWriter(fw);
+ bfw.write(jTextArea.getText(), 0, jTextArea.getText().length());
+ bfw.flush();
+ fw.close();
+ oldValue = jTextArea.getText();
+ this.setTitle(saveFileName.getName() + " - 记事本");
+ statusLabel.setText(" 当前打开文件:" + saveFileName.getAbsoluteFile());
+ } catch (IOException e1) {
+ }
+ }
+
+
+ //添加剪切功能
+ }else if (e.getActionCommand().equals("剪切")) {
+ jTextArea.copy();
+ jTextArea.cut();
+ //添加全选功能
+ } else if (e.getActionCommand().equals("全选")) {
+ jTextArea.selectAll();
+ }
+ //实现撤销功能
+ un = new UndoManager();
+ jTextArea.getDocument().addUndoableEditListener(un);
+ Repeal.addActionListener(e1 -> {
+ if (un.canUndo())
+ un.undo();
+ });
+ if(e.getActionCommand().equals("退出")){
+ int result=JOptionPane.showConfirmDialog(null,"确定退出吗","确认",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
+ if(result==JOptionPane.OK_OPTION){
+ System.exit(0);
+ } else {
+ return;
+ }
+ }
+
+
+ //实现时间日期功能
+ if(e.getActionCommand().equals("时间/日期")){
+ Calendar c = Calendar.getInstance();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
+ jTextArea.append(dateFormat.format(c.getTime()));
+ }
+ //实现删除功能
+ if (e.getActionCommand().equals("删除")) {
+ jTextArea.replaceRange("", jTextArea.getSelectionStart(), jTextArea.getSelectionEnd());
+ }
+ //实现帮助菜单栏的功能
+ if(e.getActionCommand().equals("查看帮助")){
+ JOptionPane.showMessageDialog(null,"版本1.0\n"+
+ "有问题请联系作者","帮助"
+ ,JOptionPane.PLAIN_MESSAGE);
+ }
+ if(e.getActionCommand().equals("关于记事本")){
+ JOptionPane.showMessageDialog(null, """
+ 吴蒙
+ QQ:
+ 2324821839""","作者",JOptionPane.PLAIN_MESSAGE);
+ }
+ //设置自动换行
+ if(e.getActionCommand().equals("自动换行")){
+ w++;
+ f = w % 2 == 0;
+ jTextArea.setLineWrap(f);
+ }
+
+ //设置查找功能
+ if(e.getActionCommand().equals("查找")){
+ JDialog findDialog=new JDialog(this,"查找",false);
+ Container con=findDialog.getContentPane();
+ con.setLayout(new FlowLayout(FlowLayout.LEFT));
+
+ JLabel findContentLabel=new JLabel("查找内容:");
+
+ JTextField findText=new JTextField(15);
+
+ JButton findNextButton=new JButton("查找下一个");
+
+ JCheckBox matchCheckBox=new JCheckBox("区分大小写");
+
+ ButtonGroup bGroup=new ButtonGroup();
+
+ JRadioButton upButton=new JRadioButton("向上");
+ JRadioButton downButton=new JRadioButton("向下");
+ JRadioButton circleButton=new JRadioButton("循环");
+
+ downButton.setSelected(true);
+ bGroup.add(upButton);
+ bGroup.add(downButton);
+ bGroup.add(circleButton);
+
+ JButton cancel=new JButton("取消");
+
+ JPanel panel1=new JPanel();
+ JPanel panel2=new JPanel();
+ JPanel panel3=new JPanel();
+ JPanel directionPanel=new JPanel();
+
+ directionPanel.setBorder(BorderFactory.createTitledBorder("方 向"));
+ directionPanel.add(upButton);
+ directionPanel.add(downButton);
+ directionPanel.add(circleButton);
+
+ panel1.setLayout(new GridLayout(2,1));
+ panel1.add(findNextButton);
+ panel1.add(cancel);
+
+ panel2.add(findContentLabel);
+ panel2.add(findText);
+ panel2.add(panel1);
+
+ panel3.add(matchCheckBox);
+ panel3.add(directionPanel);
+
+ con.add(panel2);
+ con.add(panel3);
+
+ findDialog.setSize(410,180);
+ findDialog.setResizable(false);
+ findDialog.setLocation(230,280);
+ findDialog.setVisible(true);
+
+
+ cancel.addActionListener(e12 -> findDialog.dispose());
+ findNextButton.addActionListener(e13 -> {
+ int k;
+ String str1,str2,str3,str4,strA,strB;
+ str1=jTextArea.getText();
+ str2=findText.getText();
+ str3=str1.toUpperCase();
+ str4=str2.toUpperCase();
+ if(matchCheckBox.isSelected()){
+ strA=str1;
+ strB=str2;
+ }else{
+ strA=str3;
+ strB=str4;
+ }
+ if(upButton.isSelected()){ //向上开始
+ if(jTextArea.getSelectedText()==null)
+ k=strA.lastIndexOf(strB,jTextArea.getCaretPosition()-1);
+ else
+ k=strA.lastIndexOf(strB, jTextArea.getCaretPosition()-findText.getText().length()-1);
+ if(k>-1){
+ jTextArea.setCaretPosition(k);
+ jTextArea.select(k,k+strB.length());
+ }else{
+ JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
+ }
+ }
+ else if(downButton.isSelected()){
+ if (jTextArea.getSelectedText() == null)
+ k=strA.indexOf(strB,jTextArea.getCaretPosition()+1);
+ else
+ k=strA.indexOf(strB, jTextArea.getCaretPosition()-findText.getText().length()+1);
+ if(k>-1){
+ jTextArea.setCaretPosition(k);
+ jTextArea.select(k,k+strB.length());
+ }else{
+ JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
+ }
+ }else if (circleButton.isSelected()) {
+
+ if (jTextArea.getSelectedText() == null)
+ k=strA.indexOf(strB,jTextArea.getCaretPosition()+1);
+ else{
+ k=strA.indexOf(strB, jTextArea.getCaretPosition()-findText.getText().length()+1);
+ }
+ if(k==-1 &&(strA.contains(strB))) {
+ k = strA.indexOf(strB);
+ }
+ if(k>-1){
+ jTextArea.setCaretPosition(k);
+ jTextArea.select(k,k+strB.length());
+ }else{
+ JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
+ }
+ }
+ });
+ }
+ if(e.getActionCommand().equals("替换")){
+ JDialog replaceDialog=new JDialog(this,"替换",false);
+ Container con=replaceDialog.getContentPane();
+ con.setLayout(new FlowLayout(FlowLayout.CENTER));
+
+ JLabel findContentLabel=new JLabel("查找内容");
+ JLabel replaceLabel=new JLabel("替换为");
+
+ JTextField findText=new JTextField(15);
+ JTextField replaceText=new JTextField(15);
+
+ JButton findNextButton=new JButton("查找下一个");
+ JButton replaceButton=new JButton("替换");
+ JButton replaceAllButton=new JButton("全部替换");
+ JButton cancel=new JButton("取消");
+
+ JCheckBox matchCheckBox=new JCheckBox("区分大小写");
+
+ JCheckBox circleButton = new JCheckBox("循环");
+
+ JPanel panel1=new JPanel();
+ JPanel panel2=new JPanel();
+ JPanel panel3=new JPanel();
+ JPanel panel4=new JPanel();
+
+ panel4.setLayout(new GridLayout(2,1));
+ panel1.add(findContentLabel);
+ panel1.add(findText);
+ panel1.add(findNextButton);
+
+ panel4.add(replaceButton);
+ panel4.add(replaceAllButton);
+
+ panel2.add(replaceLabel);
+ panel2.add(replaceText);
+ panel2.add(panel4);
+
+ panel3.add(matchCheckBox);
+ panel3.add(circleButton);
+ panel3.add(cancel);
+
+ con.add(panel1);
+ con.add(panel2);
+ con.add(panel3);
+
+ replaceDialog.setSize(420,220);
+ replaceDialog.setResizable(false);
+ replaceDialog.setLocation(230,280);
+ replaceDialog.setVisible(true);
+
+ cancel.addActionListener(e17 -> replaceDialog.dispose());
+
+ findNextButton.addActionListener(e13 -> {
+ int k;
+ String str1,str2,str3,str4,strA,strB;
+ str1=jTextArea.getText();
+ str2=findText.getText();
+ str3=str1.toUpperCase();
+ str4=str2.toUpperCase();
+ if(matchCheckBox.isSelected()){
+ strA=str1;
+ strB=str2;
+ }else{
+ strA=str3;
+ strB=str4;
+ }
+
+ if (circleButton.isSelected()) {
+ if (jTextArea.getSelectedText() == null)
+ k=strA.indexOf(strB,jTextArea.getCaretPosition()+1);
+ else{
+ k=strA.indexOf(strB, jTextArea.getCaretPosition()-findText.getText().length()+1);
+ }
+ if(k==-1 &&(strA.contains(strB))) {
+ k = strA.indexOf(strB);
+ }
+ if(k>-1){
+ jTextArea.setCaretPosition(k);
+ jTextArea.select(k,k+strB.length());
+
+ }else{
+ JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
+ }
+ }else {
+ if (jTextArea.getSelectedText() == null)
+ k = strA.indexOf(strB, jTextArea.getCaretPosition() + 1);
+ else
+ k = strA.indexOf(strB, jTextArea.getCaretPosition() - findText.getText().length() + 1);
+ if (k > -1) {
+ jTextArea.setCaretPosition(k);
+ jTextArea.select(k, k + strB.length());
+ } else {
+ JOptionPane.showMessageDialog(null, "找不到您查找的内容!", "查找", JOptionPane.INFORMATION_MESSAGE);
+ }
+ }
+ });
+
+ replaceButton.addActionListener(e15 -> {
+ if(replaceText.getText().length()==0 && jTextArea.getSelectedText() != null)
+ jTextArea.replaceSelection("");
+ if(replaceText.getText().length()>0 && jTextArea.getSelectedText()!=null)
+ jTextArea.replaceSelection(replaceText.getText());
+ });
+
+ replaceAllButton.addActionListener(e14 -> {
+ if(replaceText.getText().length()>0) {
+ String a = jTextArea.getText().replace(findText.getText(), replaceText.getText());
+ int txtAreaLength = jTextArea.getText().length();
+ jTextArea.replaceRange(a, 0, txtAreaLength);
+ }else{
+ String a = jTextArea.getText().replace(findText.getText(),"");
+ int txtAreaLength = jTextArea.getText().length();
+ jTextArea.replaceRange(a, 0, txtAreaLength);
+ }
+ });
+ }
+ //设置字体
+ if (e.getActionCommand().equals("字体")) {
+ JDialog jDialog = new JDialog(this,"字体",false);
+
+ JPanel jp = new JPanel();
+ JPanel jp2 = new JPanel();
+ JPanel jp3 = new JPanel();
+
+ jDialog.setLayout(new BorderLayout());
+
+ //字体面板和标签
+ JLabel label1 = new JLabel("字体:");
+ String[] ziti = {"楷体", "宋体", "黑体","仿宋","隶书"};
+ JComboBox