Java案例分析

【案例11-1】 简易记事本

2024-10-25 18 0

简介 1.案例描述 本案例要求利用Java Swing 图形组件开发一个图形化简易记事本。记事本功能包括文本编辑、保存文本到指定路径、打开指定路径下的文本、退出等。

【案例11-1 简易记事本

【案例介绍】

1.案例描述

本案例要求利用Java Swing 图形组件开发一个图形化简易记事本。记事本功能包括文本编辑、保存文本到指定路径、打开指定路径下的文本、退出等。

2.运行结果

upfile

运行结果

【案例目标】

l  学会分析“简易记事本”程序实现的逻辑思路。

l  能够独立完成“简易记事本”程序的源代码编写、编译及运行。

l  掌握Java Swing界面编程的应用。

【案例分析】

1)记事本界面整体可以看做是一个容器窗口。

2)从运行结果中的记事本界面的布局效果显示内容可以看出,该图形化界面有最小化、放大缩小以及关闭按钮,以及菜单栏、菜单、文本域。菜单栏可以使用JMenuBar实现,文本域可以使用JTextArea来实现,菜单可以使用JMenu来实现,菜单项可以使用JMenuItem来实现。

3)为了使窗口可以最小化、放大缩小、关闭还必须为这些按钮注册监听器,进行相应的事件处理。

4)定义一个程序入口,用于启动Swing案例程序。

【案例实现】

MyNotePad.java

 1   package chapter1101;

 2   import java.awt.*;

 3   import java.awt.event.ActionEvent;

 4   import java.awt.event.ActionListener;

 5   import java.io.*;

 6   import javax.swing.*;

 7   class MyNotePad extends JFrame implements ActionListener {

 8           private JTextArea jta = null;

 9           private JMenuBar jmb = null;

 10              private JMenu jm = null;

 11          private JMenuItem jmiOpen = null;

 12          private JMenuItem jmiSave = null;

 13          private JMenuItem jmiExit = null;

 14          private JFileChooser jfc = null;

 15          public MyNotePad() {

 16              jta = new JTextArea();

 17              this.setLayout(new BorderLayout());

 18              this.add(jta);

 19              jmb = new JMenuBar();

 20              jm = new JMenu("文件");

 21              jmiOpen = new JMenuItem("打开");

 22              jmiOpen.addActionListener(this);

 23              jmiOpen.setActionCommand("打开");

 24              jmiSave = new JMenuItem("保存");

 25              jmiSave.addActionListener(this);

 26              jmiSave.setActionCommand("保存");

 27              jmiExit = new JMenuItem("退出");

 28              jmiExit.addActionListener(this);

 29              jmiExit.setActionCommand("退出");

 30              jm.add(jmiOpen);

 31              jm.add(jmiSave);

 32              jm.add(jmiExit);

 33              jmb.add(jm);

 34              this.setJMenuBar(jmb);

 35              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 36              this.setSize(400, 300);

 37              this.setVisible(true);

 38          }

 39          @Override

 40          public void actionPerformed(ActionEvent e) {

 41              // TODO Auto-generated method stub

 42              String str = e.getActionCommand();

 43              if (str.equals("打开")) {

 44                  System.out.println("打开");

 45                  jfc = new JFileChooser();

 46                  jfc.setDialogTitle("请选择文件!");

 47                  jfc.showOpenDialog(null);

 48                  jfc.setVisible(true);

 49                  File file = jfc.getSelectedFile();

 50                  BufferedReader br = null;

 51                  try {

 52                      FileReader fReader = new FileReader(file);

 53                      br = new BufferedReader(fReader);

 54                      String readStr = "";

 55                      String allCode = "";

 56                      while ((readStr = br.readLine()) != null) {

 57                         allCode += readStr + "\r\n";

 58                      }

 59                      jta.setText(allCode);

 60                  } catch (Exception e2) {

 61                      e2.printStackTrace();

 62                      // TODO: handle exception

 63                  } finally {

 64                      try {

 65                         br.close();

 66                      } catch (IOException e1) {

 67                         // TODO Auto-generated catch block

 68                         e1.printStackTrace();

 69                      }

 70                  }

 71              } else if (str.equals("保存")) {

 72                  JFileChooser jfc = new JFileChooser();

 73                  jfc.setDialogTitle("已保存");

 74                  jfc.showSaveDialog(null);

 75                  File file = jfc.getSelectedFile();

 76                  BufferedWriter bw = null;

 77                  try {

 78                      FileWriter fw = new FileWriter(file);

 79                      bw = new BufferedWriter(fw);

 80                      String jtaStr = jta.getText();

 81                      bw.write(jtaStr);

 82                  } catch (Exception e2) {

 83                      // TODO: handle exception

 84                      e2.printStackTrace();

 85                  } finally {

 86                      try {

 87                         bw.close();

 88                      } catch (IOException e1) {

 89                         // TODO Auto-generated catch block

 90                         e1.printStackTrace();

 91                      }

 92                  }

 93              } else if (str.equals("退出")) {

 94                  System.exit(0);

 95              }

 96          }

 97      }

上述代码中,第7-13行代码,声明了文本域、菜单栏、菜单、菜单项、打开、保存、退出以及选择文件等对象。MyNotePad()方法中,对文本域、菜单栏、菜单、菜单项、打开、保存、退出等对象进行实例化,并将打开、保存、退出放入菜单容器,将菜单容器放入菜单栏容器,将菜单栏放入窗口容器。并设置了窗口容器的大小。actionPerformed()方法中,编写了打开文件、保存、以及退出的逻辑。最后,在main()方法中对容器对象进行实例化,用于启动Swing案例程序。

 

MyMenu.java

 1   package chapter1101;

 2   public class MyMenu {

 3       public static void main(String[] str) {

 4           MyNotePad notePad = new MyNotePad();

 5       }

 6    

 7   }


点赞 0

文章评论

欢迎您:

阿文博客

人生的价值,并不是用时间,而是用深度量去衡量的。——列夫·托尔斯泰

69 文章 1879 浏览 0 评论