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 cmb1 = new JComboBox<>(ziti); + jp.add(label1); + jp.add(cmb1); + + //字体面板和标签 + JLabel label2 = new JLabel("字体大小:"); + String[] nm = {"8","9","10","11","12","14","16","18", "20", "24", "26","28","36","48","72"}; + JComboBox cmb2 = new JComboBox<>(nm); + jp2.add(label2); + jp2.add(cmb2); + + //面板加入窗口 + jDialog.add(jp, BorderLayout.WEST); + jDialog.add(jp2, BorderLayout.EAST); + // 按钮设置 + JButton jButton = new JButton("确定"); + JButton exit_jButton = new JButton("取消"); + jButton.setSize(50, 20); + jButton.setSize(50, 20); + jp3.add(jButton); + jp3.add(exit_jButton); + jDialog.add(jp3, BorderLayout.SOUTH); + + jDialog.setBounds(400, 400, 250, 150); + jDialog.setVisible(true); + jDialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + // 按钮监听 + jButton.addActionListener(e1 -> { + int s1 = cmb1.getSelectedIndex(); + int s2 = cmb2.getSelectedIndex(); + + jDialog.add(jp, BorderLayout.WEST); + jDialog.add(jp2, BorderLayout.EAST); + + String name = ziti[s1]; + String num = nm[s2]; + int x = Integer.parseInt(String.valueOf(num)); + + jTextArea.setFont(new Font(name, Font.BOLD, x)); + }); + exit_jButton.addActionListener(e16 -> jDialog.dispose()); + } + } + + + + +//保存文件方法 + public void saveFile(){ + JFileChooser jFileChooser=new JFileChooser(); + + jFileChooser.setDialogTitle("打开"); + jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + jFileChooser.showOpenDialog(null); + jFileChooser.setVisible(true); + + String s1=jFileChooser.getSelectedFile().getAbsolutePath(); + FileWriter f1=null; + BufferedWriter b1=null; + File f2=new File(s1); + + try{ + f1=new FileWriter(f2); + b1=new BufferedWriter(f1); + + String[] s=jTextArea.getText().split("\n"); + for(String value:s){ + b1.write(value+"\n"); + b1.flush(); + } + }catch(Exception e){ + e.printStackTrace(); + }finally { + try{ + assert b1!=null; + b1.close(); + f1.close(); + }catch(IOException e){ + e.printStackTrace(); + } + } + } + + + //设置风格 + + public void changeFlavor(String command) throws Exception { + switch (command) { + case "Metal风格": + UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); + break; + case"Nimbus风格": + UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); + break; + case"Window风格": + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + break; + case"Windows经典风格": + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); + break; + case"Motif风格": + UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + break; + + } + //刷新组件的外观 + SwingUtilities.updateComponentTreeUI(frame1.getContentPane()); + SwingUtilities.updateComponentTreeUI(jmenuBar); + SwingUtilities.updateComponentTreeUI(jPopupMenu); + } + } + + + + + + diff --git a/out/production/Project/Main.class b/out/production/Project/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..10d21a2d1ed1892c75ad415364e98bc321aca1e2 Binary files /dev/null and b/out/production/Project/Main.class differ diff --git a/readme.md b/readme.md deleted file mode 100644 index 4af16add33b576d095308a1888db35774618715d..0000000000000000000000000000000000000000 --- a/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# ѧ -0103 \ No newline at end of file diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java deleted file mode 100644 index 24deb29bfc0e5f50fdedcd21b504e77b529d48b6..0000000000000000000000000000000000000000 --- 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!"); - } -}