diff --git "a/src/images/\350\256\260\344\272\213\346\234\254\345\233\276\346\240\207.jpg" "b/src/images/\350\256\260\344\272\213\346\234\254\345\233\276\346\240\207.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..d848aa46774cc893ec18be0cfe65c672e66618d1 Binary files /dev/null and "b/src/images/\350\256\260\344\272\213\346\234\254\345\233\276\346\240\207.jpg" differ diff --git a/src/java2020spring/MainFrame.java b/src/java2020spring/MainFrame.java new file mode 100644 index 0000000000000000000000000000000000000000..e36498f884b35f4c0a38a32c91241861eb1b893a --- /dev/null +++ b/src/java2020spring/MainFrame.java @@ -0,0 +1,648 @@ +package java2020spring; + +import java.awt.*; + +import java.awt.event.*; +import java.io.*; +import java.sql.Date; + +import javax.swing.*; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.undo.UndoManager; + +public class MainFrame extends JFrame{ + JTextArea textArea;//创建文本区 + JFileChooser FileChooser;//文件选择器 + FileReader fileReader;//文件字符输入流 + FileWriter fileWriter;//文件字符输出流 + BufferedReader in;//缓冲输入流 + BufferedWriter out;//缓冲输出流 + JMenuBar menuBar;//创建菜单条 + JMenu mnNewMenu,mnNewMenu_1,mnNewMenu_2,mnNewMenu_3,mnNewMenu_4;//创建菜单 + JMenuItem mntmNewMenuItem,mntmNewMenuItem_1,mntmNewMenuItem_2,mntmNewMenuItem_3,mntmNewMenuItem_4, + mntmNewMenuItem_5,mntmNewMenuItem_6,mntmNewMenuItem_7,mntmNewMenuItem_8,mntmNewMenuItem_9,mntmNewMenuItem_10, + mntmNewMenuItem_11,mntmNewMenuItem_12,mntmNewMenuItem_13,mntmNewMenuItem_14,mntmNewMenuItem_15,mntmNewMenuItem_16, + mntmNewMenuItem_17,mntmNewMenuItem_18,mntmNewMenuItem_19,mntmNewMenuItem_20,mntmNewMenuItem_21,mntmNewMenuItem_22, + mntmNewMenuItem_23,mntmNewMenuItem_24,mntmNewMenuItem_25,mntmNewMenuItem_26,mntmNewMenuItem_27,mntmNewMenuItem_28, + mntmNewMenuItem_29;//创建菜单项 + JCheckBoxMenuItem chckbxmntmNewCheckItem,chckbxmntmNewCheckItem_1;//菜单中的可选项 + UndoManager undoManager;//创建撤销、恢复管理器 + JPopupMenu popupMenu_1;//创建弹出菜单 + int line=0;//创建状态栏显示行数 + int colum=0;//创建状态栏显示列数 + int length=0;//状态栏显示字数 + + + public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + MainFrame frame = new MainFrame(); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + + /** + * Create the frame. + */ + public MainFrame() { + setIconImage(Toolkit.getDefaultToolkit().getImage("D:\\java\\javademo\\java2021spring\\src\\images\\记事本图标.jpg")); + //设置记事本图标 + setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + setBackground(Color.WHITE); + setTitle("小玉记事本"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 800, 600); + + JTextArea textArea = new JTextArea();//创建文本框 + textArea.setFont(new Font("Monospaced", Font.PLAIN, 14)); + JScrollPane scroll=new JScrollPane(textArea);//创建文本区滚动条 + getContentPane().add(scroll,BorderLayout.CENTER); + FileChooser=new JFileChooser();//文件选择框 + FileNameExtensionFilter filter=new FileNameExtensionFilter("文本文件","html","java");//文件过滤 + FileChooser.setFileFilter(filter);//将过滤器加入到文件选择器中 + + JMenuBar menuBar = new JMenuBar();//创建菜单条 + setJMenuBar(menuBar);//将菜单条放置到窗口顶端 + +//文件菜单 + JMenu mnNewMenu = new JMenu("文件(F)"); + mnNewMenu.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + menuBar.add(mnNewMenu);//添加菜单 + + //"新建"功能 + JMenuItem mntmNewMenuItem= new JMenuItem("新建(N)"); + mntmNewMenuItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setText(null);//新建功能清空文本框 + } + }); + mntmNewMenuItem.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu.add(mntmNewMenuItem); + mntmNewMenuItem.setMnemonic('N'); + mntmNewMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK)); + + //"打开"功能 + JMenuItem mntmNewMenuItem_1 = new JMenuItem("打开(O)..."); + mntmNewMenuItem_1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int state=FileChooser.showOpenDialog(null);//将文件选择器置于屏幕中央 + if(state==JFileChooser.APPROVE_OPTION){ + textArea.setText(null);//清空文本区 + try{ File dir=FileChooser.getCurrentDirectory();//获取当前目录 + String name=FileChooser.getSelectedFile().getName();//获取文件名 + File file=new File(dir,name); + fileReader=new FileReader(file);//输入选中文件的文本 + in=new BufferedReader(fileReader);//将文本写入缓存 + String string=null; + while((string=in.readLine())!=null){//从文件中读取文本行 + textArea.append(string+"\n"); + } + in.close();//关闭上层流,缓存被立刻写入目的地 + fileReader.close();//关闭文件字符输入流 + } + catch(IOException e1){ + System.out.println("Error "); + }//捕获文件读写发生的异常 + } + } + }); + mntmNewMenuItem_1.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu.add(mntmNewMenuItem_1); + mntmNewMenuItem_1.setMnemonic('O'); + mntmNewMenuItem_1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK)); + + //"保存"功能 + JMenuItem mntmNewMenuItem_2 = new JMenuItem("保存(S)"); + mntmNewMenuItem_2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int state=FileChooser.showOpenDialog(null);//将文件选择器置于屏幕中央 + if(state==JFileChooser.APPROVE_OPTION){ + try{ File dir=FileChooser.getCurrentDirectory();//获取当前目录 + String name=FileChooser.getSelectedFile().getName();//获取文件名 + File file=new File(dir,name); + fileWriter=new FileWriter(file);//将文本写入字符输出流 + out=new BufferedWriter(fileWriter);//将文本写入缓冲输出流 + out.write(textArea.getText()); + out.flush();//把缓冲区里的内容写到目的地 + out.close();//关闭上层流 + fileWriter.close(); + } + catch(IOException e1){ + System.out.println("Error "); + }//捕获文件读写发生的异常 + } + } + }); + mntmNewMenuItem_2.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu.add(mntmNewMenuItem_2); + mntmNewMenuItem_2.setMnemonic('S'); + mntmNewMenuItem_2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK)); + + //"另存为"功能 + JMenuItem mntmNewMenuItem_3 = new JMenuItem("另存为(A)"); + mntmNewMenuItem_3.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int state=FileChooser.showOpenDialog(null);//将文件选择器置于屏幕中央 + if(state==JFileChooser.APPROVE_OPTION){ + try{ File dir=FileChooser.getCurrentDirectory();//获取当前目录 + String name=FileChooser.getSelectedFile().getName();//获取文件名 + File file=new File(dir,name); + fileWriter=new FileWriter(file);//将文本写入字符输出流 + out=new BufferedWriter(fileWriter);//将文本写入缓冲输出流 + out.write(textArea.getText()); + out.flush();//把缓冲区里的内容写到目的地 + out.close();//关闭上层流 + fileWriter.close(); + } + catch(IOException e1){ + System.out.println("Error "); + }//捕获文件读写发生的异常 + } + } + }); + mntmNewMenuItem_3.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mntmNewMenuItem_3.setMnemonic('A'); + mntmNewMenuItem_3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK|ActionEvent.SHIFT_MASK)); + mnNewMenu.add(mntmNewMenuItem_3); + mnNewMenu.addSeparator(); + + //"退出"功能 + JMenuItem mntmNewMenuItem_4 = new JMenuItem("退出(X)"); + mntmNewMenuItem_4.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + System.exit(0);//清空文本区,退出程序 + } + }); + mntmNewMenuItem_4.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu.add(mntmNewMenuItem_4); + mntmNewMenuItem_4.setMnemonic('X'); + +//编辑菜单 + JMenu mnNewMenu_1 = new JMenu("编辑(E)"); + mnNewMenu_1.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + menuBar.add(mnNewMenu_1); + + //"撤销"功能 + JMenuItem mntmNewMenuItem_5 = new JMenuItem("撤销(U)"); + UndoManager undoManager=new UndoManager(); + textArea.getDocument().addUndoableEditListener(undoManager);//为文本添加监听器 + mntmNewMenuItem_5.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if(undoManager.canUndo()) { + undoManager.undo();//撤销上一个输入的内容 + } else { + JOptionPane.showMessageDialog(null, "无法撤销","警告",JOptionPane.WARNING_MESSAGE); + } + } + }); + mntmNewMenuItem_5.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_1.add(mntmNewMenuItem_5); + mntmNewMenuItem_5.setMnemonic('U'); + mntmNewMenuItem_5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,ActionEvent.CTRL_MASK)); + + //"恢复"功能 + JMenuItem mntmNewMenuItem_15 = new JMenuItem("恢复"); + mntmNewMenuItem_15.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if(undoManager.canRedo()) { + undoManager.redo();//恢复撤销的内容 + } else { + JOptionPane.showMessageDialog(null, "无法恢复","警告",JOptionPane.WARNING_MESSAGE); + } + } + }); + mntmNewMenuItem_15.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_1.add(mntmNewMenuItem_15); + mnNewMenu_1.addSeparator(); + + //"剪切"功能 + JMenuItem mntmNewMenuItem_6 = new JMenuItem("剪切(T)"); + mntmNewMenuItem_6.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.cut();//剪切选中的内容 + } + }); + mntmNewMenuItem_6.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_1.add(mntmNewMenuItem_6); + mntmNewMenuItem_6.setMnemonic('T'); + mntmNewMenuItem_6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,ActionEvent.CTRL_MASK)); + + //"复制"功能 + JMenuItem mntmNewMenuItem_7 = new JMenuItem("复制(C)"); + mntmNewMenuItem_7.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.copy();//复制选中的内容 + } + }); + mntmNewMenuItem_7.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_1.add(mntmNewMenuItem_7); + mntmNewMenuItem_7.setMnemonic('C'); + mntmNewMenuItem_7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK)); + + //"粘贴"功能 + JMenuItem mntmNewMenuItem_8 = new JMenuItem("粘贴(P)"); + mntmNewMenuItem_8.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.paste();//输出剪切或复制的内容 + } + }); + mntmNewMenuItem_8.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_1.add(mntmNewMenuItem_8); + mntmNewMenuItem_8.setMnemonic('P'); + mntmNewMenuItem_8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK)); + mnNewMenu_1.addSeparator(); + + //"全选"功能 + JMenuItem mntmNewMenuItem_12 = new JMenuItem("全选(A)"); + mntmNewMenuItem_12.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.selectAll();//选中文本区中的所有内容 + } + }); + mntmNewMenuItem_12.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_1.add(mntmNewMenuItem_12); + mntmNewMenuItem_12.setMnemonic('A'); + mntmNewMenuItem_12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,ActionEvent.CTRL_MASK)); + + //"删除"功能 + JMenuItem mntmNewMenuItem_9 = new JMenuItem("删除(DEL)"); + mntmNewMenuItem_9.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String string=textArea.getText().toString(); + textArea.setText(string.substring(0,textArea.getSelectionStart()));//删除选中的文本 + } + }); + mntmNewMenuItem_9.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_1.add(mntmNewMenuItem_9); + mntmNewMenuItem_9.setMnemonic(KeyEvent.VK_DELETE); + +//格式菜单 + JMenu mnNewMenu_2 = new JMenu("格式(O)"); + mnNewMenu_2.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + menuBar.add(mnNewMenu_2); + + //"自动换行"功能 + JCheckBoxMenuItem chckbxmntmNewCheckItem = new JCheckBoxMenuItem("自动换行(W)"); + chckbxmntmNewCheckItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if(chckbxmntmNewCheckItem.isSelected()) { + textArea.setLineWrap(true); + } else { + textArea.setLineWrap(false); + } + } + }); + chckbxmntmNewCheckItem.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_2.add(chckbxmntmNewCheckItem); + chckbxmntmNewCheckItem.setMnemonic('W'); + + //"背景颜色"功能 + JMenu mnNewMenu_5 = new JMenu("背景颜色"); + mnNewMenu_5.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_2.add(mnNewMenu_5); + // + JMenuItem mntmNewMenuItem_23 = new JMenuItem("白色"); + mntmNewMenuItem_23.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setBackground(Color.WHITE); + } + }); + mntmNewMenuItem_23.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_5.add(mntmNewMenuItem_23); + + // + JMenuItem mntmNewMenuItem_24 = new JMenuItem("黑色"); + mntmNewMenuItem_24.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setBackground(Color.BLACK); + } + }); + mntmNewMenuItem_24.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_5.add(mntmNewMenuItem_24); + + // + JMenuItem mntmNewMenuItem_25 = new JMenuItem("灰色"); + mntmNewMenuItem_25.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setBackground(Color.GRAY); + } + }); + mntmNewMenuItem_25.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_5.add(mntmNewMenuItem_25); + + // + JMenuItem mntmNewMenuItem_22 = new JMenuItem("粉色"); + mntmNewMenuItem_22.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setBackground(Color.PINK); + } + }); + mntmNewMenuItem_22.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_5.add(mntmNewMenuItem_22); + + // + JMenuItem mntmNewMenuItem_26 = new JMenuItem("红色"); + mntmNewMenuItem_26.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setBackground(Color.RED); + } + }); + mntmNewMenuItem_26.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_5.add(mntmNewMenuItem_26); + + // + JMenuItem mntmNewMenuItem_27 = new JMenuItem("黄色"); + mntmNewMenuItem_27.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setBackground(Color.YELLOW); + } + }); + mntmNewMenuItem_27.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_5.add(mntmNewMenuItem_27); + + // + JMenuItem mntmNewMenuItem_28 = new JMenuItem("绿色"); + mntmNewMenuItem_28.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setBackground(Color.GREEN); + } + }); + mntmNewMenuItem_28.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_5.add(mntmNewMenuItem_28); + + //"字体颜色"功能 + JMenu mnNewMenu_6 = new JMenu("字体颜色"); + mnNewMenu_6.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_2.add(mnNewMenu_6); + + JMenuItem mntmNewMenuItem_29 = new JMenuItem("白色"); + mntmNewMenuItem_29.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setForeground(Color.WHITE); + } + }); + mntmNewMenuItem_29.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_6.add(mntmNewMenuItem_29); + + JMenuItem mntmNewMenuItem_30 = new JMenuItem("黑色"); + mntmNewMenuItem_30.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setForeground(Color.BLACK); + } + }); + mntmNewMenuItem_30.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_6.add(mntmNewMenuItem_30); + + JMenuItem mntmNewMenuItem_31 = new JMenuItem("粉色"); + mntmNewMenuItem_31.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setForeground(Color.PINK); + } + }); + mntmNewMenuItem_31.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_6.add(mntmNewMenuItem_31); + + JMenuItem mntmNewMenuItem_32 = new JMenuItem("黄色"); + mntmNewMenuItem_32.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setForeground(Color.YELLOW); + } + }); + mntmNewMenuItem_32.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_6.add(mntmNewMenuItem_32); + + JMenuItem mntmNewMenuItem_33 = new JMenuItem("绿色"); + mntmNewMenuItem_33.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setForeground(Color.GREEN); + } + }); + mntmNewMenuItem_33.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_6.add(mntmNewMenuItem_33); + + JMenuItem mntmNewMenuItem_34 = new JMenuItem("红色"); + mntmNewMenuItem_34.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.setForeground(Color.RED); + } + }); + mntmNewMenuItem_34.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_6.add(mntmNewMenuItem_34); + + +//快捷菜单 + JPopupMenu popupMenu_1 = new JPopupMenu(); + addPopup(textArea, popupMenu_1); + //撤销 + JMenuItem mntmNewMenuItem_16 = new JMenuItem("撤销(U)"); + mntmNewMenuItem_16.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if(undoManager.canUndo()) { + undoManager.undo();//撤销上一个输入的内容 + } else { + JOptionPane.showMessageDialog(null, "无法撤销","警告",JOptionPane.WARNING_MESSAGE); + } + } + }); + mntmNewMenuItem_16.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + popupMenu_1.add(mntmNewMenuItem_16); + mntmNewMenuItem_16.setMnemonic('U'); + + JSeparator separator = new JSeparator(); + popupMenu_1.add(separator); + + //剪切 + JMenuItem mntmNewMenuItem_17 = new JMenuItem("剪切(T)"); + mntmNewMenuItem_17.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.cut();//剪切选中的内容 + } + }); + mntmNewMenuItem_17.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + popupMenu_1.add(mntmNewMenuItem_17); + mntmNewMenuItem_17.setMnemonic('T'); + + //复制 + JMenuItem mntmNewMenuItem_18 = new JMenuItem("复制(C)"); + mntmNewMenuItem_18.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.copy();//复制选中的内容 + } + }); + mntmNewMenuItem_18.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + popupMenu_1.add(mntmNewMenuItem_18); + mntmNewMenuItem_18.setMnemonic('C'); + + //粘贴 + JMenuItem mntmNewMenuItem_19 = new JMenuItem("粘贴(P)"); + mntmNewMenuItem_19.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.paste();//输出剪切或复制的内容 + } + }); + mntmNewMenuItem_19.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + popupMenu_1.add(mntmNewMenuItem_19); + mntmNewMenuItem_19.setMnemonic('P'); + + //删除 + JMenuItem mntmNewMenuItem_20 = new JMenuItem("删除(D)"); + mntmNewMenuItem_20.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String string=textArea.getText().toString(); + textArea.setText(string.substring(0,textArea.getSelectionStart()));//删除选中的文本 + } + }); + mntmNewMenuItem_20.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + popupMenu_1.add(mntmNewMenuItem_20); + mntmNewMenuItem_20.setMnemonic('D'); + + JSeparator separator_1 = new JSeparator(); + popupMenu_1.add(separator_1); + + //全选 + JMenuItem mntmNewMenuItem_21 = new JMenuItem("全选(A)"); + mntmNewMenuItem_21.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.selectAll();//选中文本区中的所有内容 + } + }); + mntmNewMenuItem_21.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + popupMenu_1.add(mntmNewMenuItem_21); + mntmNewMenuItem_21.setMnemonic('A'); + +//查看菜单 + JMenu mnNewMenu_3 = new JMenu("查看(V)"); + mnNewMenu_3.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + menuBar.add(mnNewMenu_3); + + //"状态栏"功能 + JCheckBoxMenuItem chckbxmntmNewCheckItem_1 = new JCheckBoxMenuItem("状态栏(S)"); + JToolBar toolBar=new JToolBar();//创建工具栏 + toolBar.setSize(textArea.getSize().width,12); + getContentPane().add(toolBar,BorderLayout.SOUTH); + Date timeDate=new Date(System.currentTimeMillis());//创建时间 + Label label_1=new Label("时间:"+timeDate);//时间 + Label label_2=new Label("第"+line+"行,第"+colum+"列");//状态 + Label label_3=new Label("共计"+length+"字");//字数统计 + toolBar.add(label_1); + toolBar.addSeparator(); + toolBar.add(label_2); + toolBar.addSeparator(); + toolBar.add(label_3); + textArea.addCaretListener(new CaretListener() { + public void caretUpdate(CaretEvent e) { + try { int position=textArea.getCaretPosition(); + int set=e.getDot(); + line=textArea.getLineOfOffset(e.getDot()); + colum=e.getDot() - textArea.getLineStartOffset(line); + label_2.setText("第"+(line+1)+"行,第"+(colum+1)+"列"); + length=textArea.getText().replaceAll("\\s+", "").length(); + label_3.setText("共计"+length+"字"); + } catch (Exception e1) {} + } + }); + toolBar.setVisible(true); + toolBar.setFloatable(false); + label_1.setVisible(true); + label_2.setVisible(true); + label_3.setVisible(true); + chckbxmntmNewCheckItem_1.setState(true); + chckbxmntmNewCheckItem_1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if(chckbxmntmNewCheckItem_1.getState()) { + label_2.setVisible(true); + label_3.setVisible(true); + } + else { + label_2.setVisible(false); + label_3.setVisible(false); + } + } + }); + chckbxmntmNewCheckItem_1.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_3.add(chckbxmntmNewCheckItem_1); + chckbxmntmNewCheckItem_1.setMnemonic('S'); + +//帮助菜单 + JMenu mnNewMenu_4 = new JMenu("帮助(H)"); + mnNewMenu_4.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + menuBar.add(mnNewMenu_4); + + //"查看帮助"功能 + JMenuItem mntmNewMenuItem_13 = new JMenuItem("查看帮助(H)"); + mntmNewMenuItem_13.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + JFrame frame_2=new JFrame("查看帮助"); + frame_2.setLocation(200, 50); + frame_2.setSize(800,500); + frame_2.setVisible(true); + frame_2.setBackground(Color.LIGHT_GRAY); + JLabel label_5=new JLabel(); + frame_2.add(label_5); + label_5.setText("记事本帮助
小玉记事本共有5个大的菜单项目,总计19余个子功能
菜单一“文件”
//“新建”功能:鼠标点击新建按钮" + + ",立即清空记事本中所有内容(不做保存)。快捷键:Ctrl+N
//“打开”功能:鼠标点击打开按钮,弹出文件选择器窗口,可打开本地文件。" + + "文件类型分为文本文件和所有文件。快捷键:Ctrl+O
//“保存”功能:鼠标点击保存按钮,弹出文件选择窗口,选择保存路径并命名即可保存。快捷键:" + + "Ctrl+S
//“另存为”功能:鼠标点击另存为按钮,,弹出文件选择窗口,选择保存路径并命名即可保存。快捷键:Ctrl+Shift+S
//“退出”" + + "功能:鼠标点击退出按钮,立即关闭记事本窗口(不做保存)。
菜单二“编辑”
//“撤销”功能:鼠标点击撤销按钮,撤销上一步操作。快捷键:Ctrl+Z" + + "
//“恢复”功能:鼠标点击回复按钮,恢复上一步撤销的操作。
//“剪切”功能:鼠标选中文本,点击剪切按钮,即可剪切文本,再点击粘贴按钮,即可" + + "将剪切下来的文本粘贴在光标的位置之后。快捷键:Ctrl+X
//“复制”功能:鼠标选中文本,点击复制按钮,即可复制文本,再点击粘贴按钮,即可将选中" + + "的文本粘贴在光标的位置之后。快捷键:Ctrl+C
//“粘贴”功能:鼠标点击粘贴按钮,将剪切或复制的文本粘贴在光标的位置之后。快捷键:Ctrl+V
" + + "//“全选”功能:鼠标点击全选按钮,选中文本框中的所有内容。快捷键:Ctrl+A
//“删除”功能:鼠标选中文本,点击删除按钮,即可删除所选中的内容。
" + + "菜单三“格式”
//“自动换行”功能:鼠标勾选自动换行按钮,当文本行溢出记事本框时自动换行。
//“背景颜色”功能:鼠标移动至背景颜色菜单上,将会" + + "打开子菜单,点击所需设置颜色的按钮,即可改变文本区颜色(初始颜色为白色)。
//“字体颜色”功能:鼠标移动至字体颜色菜单上,将会打开子菜单,点击所需" + + "设置颜色的按钮,即可改变输入文本的颜色(初始颜色为黑色)。
菜单四“查看”
//“状态栏”功能:鼠标取消状态栏按钮,记事本下方显示行、列数、总共" + + "字数将会消失,时间显示不变(初始状态为选中)。
菜单五“帮助”
//“查看帮助”功能:鼠标点击查看帮助按钮,将弹出小玉记事本的使用帮助,功能简介等。" + + "
//“关于记事本”功能:鼠标点击关于记事本按钮,将弹出小玉记事本的作者信息以及留言。
“快捷菜单”功能:鼠标右键点击文本框任意位置,将弹出" + + "快捷编辑菜单。"); + label_5.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 12)); + } + }); + mntmNewMenuItem_13.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_4.add(mntmNewMenuItem_13); + mntmNewMenuItem_13.setMnemonic('H'); + + //"关于记事本"功能 + JMenuItem mntmNewMenuItem_14 = new JMenuItem("关于记事本(A)"); + mntmNewMenuItem_14.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + JFrame frame_1=new JFrame("关于记事本"); + frame_1.setLocation(200, 50); + frame_1.setSize(500,500); + frame_1.setVisible(true); + JLabel label_4=new JLabel("————————————欢迎使用小玉的记事本————————————
小玉的邮箱:1751012123@qq.com " + + "如有错误,还请老师斧正
吴小玉 信管1班 202025710123"); + label_4.setHorizontalAlignment(SwingConstants.CENTER); + frame_1.getContentPane().add(label_4); + } + }); + mntmNewMenuItem_14.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 14)); + mnNewMenu_4.add(mntmNewMenuItem_14); + mntmNewMenuItem_14.setMnemonic('A'); + + } + + private static void addPopup(Component component, final JPopupMenu popup) { + component.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (e.isPopupTrigger()) { + showMenu(e); + } + } + public void mouseReleased(MouseEvent e) { + if (e.isPopupTrigger()) { + showMenu(e); + } + } + private void showMenu(MouseEvent e) { + popup.show(e.getComponent(), e.getX(), e.getY()); + } + }); + } + }