21xrx.com
2024-09-19 09:41:56 Thursday
登录
文章检索 我的文章 写文章
使用Java实现记事本程序:一个完整案例
2023-06-14 06:35:57 深夜i     --     --
Java Swing

在Java程序设计课程的实习中,有一个非常基础也极为实用的任务,那就是编写一个记事本程序。它可以帮助我们更好地理解Java Swing组件的使用,以及加深对Java面向对象的编程思想。

下面是一个完整的Java记事本程序案例,帮助你快速入门,也保证熟练地掌握本课程的知识点。

这个程序实际上也是一个Java图形用户界面(GUI)程序。我们需要使用一些Java Swing组件,如JTextArea、JMenuBar和JMenu等,来构建一个完整的记事本程序。

具体的步骤如下:

1. 创建一个新的Java项目,并引入Swing包。

2. 创建一个主窗口,这个窗口是整个程序的框架。


 public class NotepadMain extends JFrame {

   private JTextArea textArea; //文本编辑器

   private JMenuBar menuBar;  //菜单栏

  

   public NotepadMain() {

     //设置窗口的基本属性

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

     setSize(600, 400);

     setLocationRelativeTo(null);

     setTitle("Java记事本");

 

     //创建文本编辑器

     textArea = new JTextArea();

     //创建菜单栏

     menuBar = new JMenuBar();

 

     //将文本编辑器和菜单栏添加到窗口中

     getContentPane().add(textArea);

     setJMenuBar(menuBar);

 

     setVisible(true);

   }

 

   public static void main(String[] args) {

     new NotepadMain();

   }

 }

 

3. 创建一个菜单,我们可以在这个菜单上添加一些菜单项,如新建、打开、保存等等。


public class NotepadMain extends JFrame {

   private JTextArea textArea; //文本编辑器

   private JMenuBar menuBar;  //菜单栏

  

   public NotepadMain() {

     //设置窗口的基本属性

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

     setSize(600, 400);

     setLocationRelativeTo(null);

     setTitle("Java记事本");

 

     //创建文本编辑器

     textArea = new JTextArea();

     //创建菜单栏

     menuBar = new JMenuBar();

     //创建菜单

     JMenu fileMenu = new JMenu("文件(F)");

     //设置快捷键

     fileMenu.setMnemonic(KeyEvent.VK_F);

     

     //创建菜单项

     JMenuItem newItem = new JMenuItem("新建", KeyEvent.VK_N);

     JMenuItem openItem = new JMenuItem("打开", KeyEvent.VK_O);

     JMenuItem saveItem = new JMenuItem("保存", KeyEvent.VK_S);

 

     //将菜单项添加到菜单中

     fileMenu.add(newItem);

     fileMenu.add(openItem);

     fileMenu.add(saveItem);

     //将菜单添加到菜单栏中,记得先将文件菜单加入菜单栏再设置菜单栏

     menuBar.add(fileMenu);

 

     //将文本编辑器和菜单栏添加到窗口中

     getContentPane().add(textArea);

     setJMenuBar(menuBar);

 

     setVisible(true);

   }

 

   public static void main(String[] args) {

     new NotepadMain();

   }

 }

4. 实现菜单项的功能


public class NotepadMain extends JFrame {

   private JTextArea textArea; //文本编辑器

   private JMenuBar menuBar;  //菜单栏

   private JFileChooser fileChooser; //文件选择器

   

   public NotepadMain() {

     //设置窗口的基本属性

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

     setSize(600, 400);

     setLocationRelativeTo(null);

     setTitle("Java记事本");

 

     //创建文本编辑器

     textArea = new JTextArea();

     //创建菜单栏

     menuBar = new JMenuBar();

     //创建菜单

     JMenu fileMenu = new JMenu("文件(F)");

     //设置快捷键

     fileMenu.setMnemonic(KeyEvent.VK_F);

     

     //创建菜单项

     JMenuItem newItem = new JMenuItem("新建", KeyEvent.VK_N);

     JMenuItem openItem = new JMenuItem("打开", KeyEvent.VK_O);

     JMenuItem saveItem = new JMenuItem("保存", KeyEvent.VK_S);

 

     //添加菜单项的动作监听器

     newItem.addActionListener(new ActionListener() {

       @Override

       public void actionPerformed(ActionEvent e) {

         textArea.setText(""); //清空文本编辑器

       }

     });

 

     openItem.addActionListener(new ActionListener() {

       @Override

       public void actionPerformed(ActionEvent e) {

         

         if (fileChooser == null) {

           fileChooser = new JFileChooser();

         }

 

         int result = fileChooser.showOpenDialog(NotepadMain.this);

 

         if (result == JFileChooser.APPROVE_OPTION) {

           File selectedFile = fileChooser.getSelectedFile();

           BufferedReader reader = null;

           try {

             reader = new BufferedReader(new FileReader(selectedFile));

             String line = "";

             while ((line = reader.readLine()) != null) {

               textArea.append(line);

               textArea.append("\n");

             }

           } catch (IOException e1) {

             e1.printStackTrace();

           } finally {

             if (reader != null) {

               try {

                 reader.close();

               } catch (IOException e1) {

                 e1.printStackTrace();

               }

             }

           }

         }

       }

     });

 

     saveItem.addActionListener(new ActionListener() {

       @Override

       public void actionPerformed(ActionEvent e) {

         

         if (fileChooser == null) {

           fileChooser = new JFileChooser();

         }

 

         int result = fileChooser.showSaveDialog(NotepadMain.this);

 

         if (result == JFileChooser.APPROVE_OPTION) {

           File selectedFile = fileChooser.getSelectedFile();

           BufferedWriter writer = null;

           try {

             writer = new BufferedWriter(new FileWriter(selectedFile));

             writer.write(textArea.getText());

             writer.flush();

           } catch (IOException e1) {

             e1.printStackTrace();

           } finally {

             if (writer != null) {

               try {

                 writer.close();

               } catch (IOException e1) {

                 e1.printStackTrace();

               }

             }

           }

         }

       }

     });

 

     //将菜单项添加到菜单中

     fileMenu.add(newItem);

     fileMenu.add(openItem);

     fileMenu.add(saveItem);

     //将菜单添加到菜单栏中,记得先将文件菜单加入菜单栏再设置菜单栏

     menuBar.add(fileMenu);

 

     //将文本编辑器和菜单栏添加到窗口中

     getContentPane().add(textArea);

     setJMenuBar(menuBar);

 

     setVisible(true);

   }

 

   public static void main(String[] args) {

     new NotepadMain();

   }

 }

然后你就可以运行这个程序了,尝试在菜单中打开、保存文件,并在文本框中编写、编辑内容。

在这个过程中,你将学到:

- 如何使用Java Swing组件来创建GUI界面;

- 如何设置JFrame的一些基本属性,如大小、位置、标题、关闭方式等;

- 如何创建一个菜单,并添加菜单项;

- 如何实现菜单项的具体功能,如文件的打开、保存;

- 如何使用文件选择器(JFileChooser)来选择文件。

关键词:

Java Swing、JFrame、菜单、菜单项、JTextArea、文件选择器

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复