[Java] java实现的一个简单的记事本小程序 →→→→→进入此内容的聊天室

来自 , 2020-09-03, 写在 Java, 查看 124 次.
URL http://www.code666.cn/view/bcc0d400
  1.  
  2. import java.awt.BorderLayout;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.KeyEvent;
  6. import java.io.BufferedReader;
  7. import java.io.BufferedWriter;
  8. import java.io.File;
  9. import java.io.FileReader;
  10. import java.io.FileWriter;
  11. import java.io.IOException;
  12. import javax.swing.JCheckBoxMenuItem;
  13. import javax.swing.JFileChooser;
  14. import javax.swing.JFrame;
  15. import javax.swing.JMenu;
  16. import javax.swing.JMenuBar;
  17. import javax.swing.JMenuItem;
  18. import javax.swing.JOptionPane;
  19. import javax.swing.JScrollPane;
  20. import javax.swing.JTextArea;
  21. import javax.swing.JTextPane;
  22. import javax.swing.KeyStroke;
  23. import javax.swing.WindowConstants;
  24.  
  25. public class NotePadTest extends JFrame {
  26.  
  27.         private static final long serialVersionUID = 7733222986650734523L;
  28.         JMenuBar jmb = new JMenuBar();
  29.         // 创建子菜单
  30.         JMenu jm1 = new JMenu("文件");
  31.         JMenu jm2 = new JMenu("编辑");
  32.         JMenu jm3 = new JMenu("格式");
  33.         JMenu jm5 = new JMenu("帮助");
  34.         // 创建菜单项(文件)
  35.         JMenuItem jme1 = new JMenuItem("新建");
  36.         JMenuItem jme2 = new JMenuItem("打开");
  37.         JMenuItem jme3 = new JMenuItem("保存");
  38.         JMenuItem jme4 = new JMenuItem("另存为...");
  39.         JMenuItem jme5 = new JMenuItem("退出");
  40.         // 创建菜单项(编辑)
  41.         JMenuItem jme6 = new JMenuItem("全选");
  42.         JMenuItem jme7 = new JMenuItem("剪切");
  43.         JMenuItem jme8 = new JMenuItem("复制");
  44.         JMenuItem jme9 = new JMenuItem("粘贴");
  45.         JMenuItem jme10 = new JMenuItem("删除");
  46.         // 创建菜单项(格式)
  47.         JCheckBoxMenuItem jme11 = new JCheckBoxMenuItem("自动换行", false);
  48.         // 创建菜单项(帮助)
  49.         JMenuItem jme14 = new JMenuItem("查看帮助");
  50.         JMenuItem jme15 = new JMenuItem("关于记事本");
  51.         // 实例化文本域
  52.         JTextArea jtext = new JTextArea();
  53.         JTextPane pane = new JTextPane();// 文本窗格
  54.         JScrollPane jscroll = new JScrollPane(jtext);
  55.         JTextPane jtshow = new JTextPane();
  56.  
  57.         public NotePadTest() {
  58.                 setTitle("记事本");
  59.                 setSize(500, 460);
  60.                 setLocationRelativeTo(null);
  61.                 pane.setLayout(new BorderLayout());
  62.                 // 设置快捷键
  63.                 jme1.setMnemonic('N');
  64.                 jme1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
  65.                 jme2.setMnemonic('O');
  66.                 jme2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
  67.                 jme3.setMnemonic('S');
  68.                 jme3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));
  69.                 jme6.setMnemonic('A');
  70.                 jme6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
  71.                 jme7.setMnemonic('X');
  72.                 jme7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK));
  73.                 jme8.setMnemonic('C');
  74.                 jme8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK));
  75.                 jme9.setMnemonic('V');
  76.                 jme9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK));
  77.                 jme10.setMnemonic('L');
  78.                 jme10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_MASK));
  79.                 // 添加菜单项到子菜单(文件)
  80.                 jm1.add(jme1);
  81.                 jm1.addSeparator();
  82.                 jm1.add(jme2);
  83.                 jm1.addSeparator();
  84.                 jm1.add(jme3);
  85.                 jm1.addSeparator();
  86.                 jm1.add(jme4);
  87.                 jm1.addSeparator();
  88.                 jm1.add(jme5);
  89.                 jmb.add(jm1);
  90.                 // 添加菜单项到子菜单(编辑)
  91.                 jm2.add(jme6);
  92.                 jm2.addSeparator();
  93.                 jm2.add(jme7);
  94.                 jm2.addSeparator();
  95.                 jm2.add(jme8);
  96.                 jm2.addSeparator();
  97.                 jm2.add(jme9);
  98.                 jm2.addSeparator();
  99.                 jm2.add(jme10);
  100.                 jmb.add(jm2);
  101.                 // 添加菜单项到子菜单(格式)
  102.                 // 设置快捷键
  103.                 jme11.setMnemonic('w');
  104.                 jme11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_MASK));
  105.                 jm3.add(jme11);
  106.                 jmb.add(jm3);
  107.                 // 添加菜单项到子菜单(帮助)
  108.                 jm5.add(jme14);
  109.                 jm5.addSeparator();
  110.                 jm5.add(jme15);
  111.                 jmb.add(jm5);
  112.                 // 将菜单栏添加到窗体顶部
  113.                 setJMenuBar(jmb);
  114.                 // container.add(jmb,BorderLayout.NORTH);
  115.                 // 添加文本域
  116.                 pane.add(jscroll, BorderLayout.CENTER);
  117.                 add(pane);
  118.                 // **************************添加事件监听器(全选部分)*******************************
  119.                 jme6.addActionListener(new ActionListener() {
  120.                         @Override
  121.                         public void actionPerformed(ActionEvent e) {
  122.                                 jtext.selectAll();// 全选
  123.                         }
  124.                 });
  125.                 // **************************添加事件监听器(剪切部分)*******************************
  126.                 jme7.addActionListener(new ActionListener() {
  127.                         @Override
  128.                         public void actionPerformed(ActionEvent e) {
  129.                                 jtext.cut();// 剪切
  130.                         }
  131.                 });
  132.                 // **************************添加事件监听器(复制部分)*******************************
  133.                 jme8.addActionListener(new ActionListener() {
  134.                         @Override
  135.                         public void actionPerformed(ActionEvent e) {
  136.                                 jtext.copy();// 复制
  137.                         }
  138.                 });
  139.                 // **************************添加事件监听器(粘贴部分)*******************************
  140.                 jme9.addActionListener(new ActionListener() {
  141.  
  142.                         @Override
  143.                         public void actionPerformed(ActionEvent e) {
  144.                                 jtext.paste();// 粘贴
  145.                         }
  146.                 });
  147.                 // **************************添加事件监听器(删除部分)*******************************
  148.                 jme10.addActionListener(new ActionListener() {
  149.                         @Override
  150.                         public void actionPerformed(ActionEvent e) {
  151.                                 jtext.replaceSelection(null);// 删除
  152.                         }
  153.                 });
  154.                 // **************************添加事件监听器(新建部分)********************************
  155.                 jme1.addActionListener(new ActionListener() {
  156.                         @Override
  157.                         public void actionPerformed(ActionEvent e) {
  158.                                 if (jtext.getText().equals("")) {
  159.                                         jtext.setText("");
  160.                                 } else {
  161.                                         int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本",
  162.                                                         JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
  163.                                         if (result == 0) {
  164.                                                 save();
  165.                                         }
  166.                                 }
  167.                         }
  168.                 });
  169.                 // **************************添加事件监听器(打开部分)********************************
  170.                 jme2.addActionListener(new ActionListener() {
  171.                         @Override
  172.                         public void actionPerformed(ActionEvent e) {
  173.                                 JFileChooser choose = new JFileChooser();
  174.                                 choose.setDialogTitle("打开");
  175.                                 File file;
  176.                                 int result = choose.showOpenDialog(NotePadTest.this);
  177.                                 if (result == JFileChooser.APPROVE_OPTION) {
  178.                                         try { // 获取当前选择的文件
  179.                                                         // 创建文件输出流
  180.                                                 file = choose.getSelectedFile();
  181.                                                 BufferedReader br = new BufferedReader(new FileReader(file));
  182.                                                 String str = null;
  183.                                                 while ((str = br.readLine()) != null) {
  184.                                                         jtext.append(str + "\r\n");
  185.                                                 }
  186.                                                 // 设置记事本标题
  187.                                                 setTitle(file.getName() + "  记事本");
  188.                                                 br.close();
  189.                                         } catch (Exception ee) {
  190.                                                 ee.printStackTrace();
  191.                                         }
  192.                                 }
  193.                         }
  194.                 });
  195.                 // **************************添加事件监听器(保存部分)********************************
  196.                 jme3.addActionListener(new ActionListener() {
  197.                         @Override
  198.                         public void actionPerformed(ActionEvent e) {
  199.                                 if (jtext.getText() != null && !jtext.getText().equals("")) {
  200.                                         save();
  201.                                 }
  202.                         }
  203.                 });
  204.                 // **************************添加事件监听器(另存为部分)********************************
  205.                 jme4.addActionListener(new ActionListener() {
  206.                         @Override
  207.                         public void actionPerformed(ActionEvent e) {
  208.                                 if (jtext.getText() != null && !jtext.getText().equals("")) {
  209.                                         save();
  210.                                 }
  211.                         }
  212.                 });
  213.                 // **************************添加事件监听器(退出部分)********************************
  214.                 jme5.addActionListener(new ActionListener() {
  215.                         @Override
  216.                         public void actionPerformed(ActionEvent e) {
  217.                                 if (jtext.getText().equals("")) {
  218.                                         NotePadTest.this.dispose();
  219.                                 } else {
  220.                                         int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本",
  221.                                                         JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
  222.                                         if (result == 0) {
  223.                                                 if (jtext.getText() != null && !jtext.getText().equals("")) {
  224.                                                         save();
  225.                                                 }
  226.                                         } else if (result == 1) {
  227.                                                 NotePadTest.this.dispose();
  228.                                         }
  229.                                 }
  230.                         }
  231.                 });
  232.                 // **************************添加事件监听器(自动换行部分)********************************
  233.                 jme11.addActionListener(new ActionListener() {
  234.                         @Override
  235.                         public void actionPerformed(ActionEvent e) {
  236.                                 if (jme11.isSelected()) {
  237.                                         jtext.setLineWrap(true);
  238.                                 } else {
  239.                                         jtext.setLineWrap(false);
  240.                                 }
  241.                         }
  242.                 });
  243.                 // **************************添加事件监听器(查看帮助部分)***********************************
  244.                 jme14.addActionListener(new ActionListener() {
  245.  
  246.                         @Override
  247.                         public void actionPerformed(ActionEvent e) {
  248.  
  249.                                 JOptionPane.showMessageDialog(NotePadTest.this, "输入文字即可!");
  250.                         }
  251.                 });
  252.                 // **************************添加事件监听器(关于记事本部分)***********************************
  253.                 jme15.addActionListener(new ActionListener() {
  254.  
  255.                         @Override
  256.                         public void actionPerformed(ActionEvent e) {
  257.  
  258.                                 JOptionPane.showMessageDialog(NotePadTest.this, "版本:Windows旗舰版");
  259.                         }
  260.                 });
  261.  
  262.                 // 设置窗体关闭
  263.                 if (jtext.getText().equals("")) {
  264.                         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  265.  
  266.                 } else if (jtext.getText() != null) {
  267.                         int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本",
  268.                                         JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
  269.                         if (result == 0) {
  270.                         } else if (result == 1) {
  271.                                 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  272.                         }
  273.                 }
  274.                 // 设置窗体是否可见
  275.                 setVisible(true);
  276.         }
  277.  
  278.         public void save() {
  279.                 JFileChooser choose = new JFileChooser();
  280.                 int result = choose.showSaveDialog(NotePadTest.this);// NotePad.this父容器
  281.                 if (result == JFileChooser.APPROVE_OPTION) {
  282.                         File file;
  283.                         try {
  284.                                 file = choose.getSelectedFile();
  285.                                 BufferedWriter bw = new BufferedWriter(new FileWriter(file));
  286.                                 bw.write(jtext.getText());
  287.                                 bw.close();
  288.                         } catch (IOException e1) {
  289.                                 e1.printStackTrace();
  290.                         }
  291.                 }
  292.  
  293.         }
  294.  
  295.         public static void main(String[] args) {
  296.                 new NotePadTest();
  297.         }
  298. }
  299.  

回复 "java实现的一个简单的记事本小程序"

这儿你可以回复上面这条便签

captcha