要求:如下图所示,记事本具有新建、打开文本、保存、关闭等功能。
算法思路:
这是一个使用Java Swing库创建的简单文本编辑器。它包含一个菜单栏,其中包含“文件”菜单以及四个子菜单项:“新建”、“打开”、“保存”和“关闭”。用户可以在文本区域中输入和编辑文本,然后通过点击相应的菜单项来执行操作。
1. 创建一个名为Text的类,实现ActionListener接口。
2. 在Text类的构造方法中,初始化JFrame、JMenuBar、JMenu、JMenuItem、JTextArea、JFileChooser等组件,并设置它们的属性和事件监听器。
3. 在actionPerformed方法中,根据用户点击的菜单项执行相应的操作:
- 如果点击了“新建”菜单项,则创建一个新的Text实例。
- 如果点击了“打开”菜单项,则弹出文件选择对话框,让用户选择一个文件,然后将文件内容显示在文本区域中。
- 如果点击了“保存”菜单项,则弹出文件选择对话框,让用户选择保存位置,然后将文本区域的内容保存到文件中。
- 如果点击了“关闭”菜单项,则退出程序。
源代码:
Text.java
package Question10;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class Text implements ActionListener {
private JFrame jFrame;
private JMenuBar jMenuBar;
private JMenu jMenu;
private JMenuItem jMenuItemNew, jMenuItemOpen, jMenuItemSave, jMenuItemClose;
private JTextArea jTextArea;
private JFileChooser jFileChooser;
private Font font;
private JScrollPane jScrollPane;
public Text() {
jFrame = new JFrame("记事本");
font=new Font("楷体",Font.PLAIN,15);
jMenuBar = new JMenuBar();
jMenu = new JMenu("文件");
jMenu.setFont(font);
jFrame.setJMenuBar(jMenuBar);
jMenuBar.add(jMenu);
jMenuItemNew = new JMenuItem("新建");
jMenu.add(jMenuItemNew);
jMenuItemNew.setFont(font);
jMenuItemNew.addActionListener(this);
jMenuItemOpen = new JMenuItem("打开");
jMenu.add(jMenuItemOpen);
jMenuItemOpen.setFont(font);
jMenuItemOpen.addActionListener(this);
jMenuItemSave = new JMenuItem("保存");
jMenu.add(jMenuItemSave);
jMenuItemSave.setFont(font);
jMenuItemSave.addActionListener(this);
jMenu.addSeparator();
jMenuItemClose = new JMenuItem("关闭");
jMenu.add(jMenuItemClose);
jMenuItemClose.setFont(font);
jMenuItemClose.addActionListener(this);
jTextArea = new JTextArea();
jFrame.add(jTextArea);
jScrollPane =new JScrollPane(jTextArea);
jFrame.add(jScrollPane);
jFileChooser = new JFileChooser();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(new Dimension(500, 500));
jFrame.setLocation(new Point(400, 90));
jFrame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
Object object = e.getSource();
if (object == jMenuItemNew) {
new Text();
} else if (object == jMenuItemOpen) {
jFileChooser.showOpenDialog(null);
File file = jFileChooser.getSelectedFile();
try {
InputStream inputStream = new FileInputStream(file);
byte[] bt = new byte[inputStream.available()];
inputStream.read(bt);
jTextArea.setText(new String(bt));
inputStream.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
else if(object==jMenuItemSave)
{
jFileChooser.showSaveDialog(null);
File file = jFileChooser.getSelectedFile();
try {
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(jTextArea.getText());
fileWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
else if(object==jMenuItemClose)
{
System.exit(1);
}
}
}
JiShiBen.java
package Question10;
public class JiShiBen {
public static void main(String[] args) {
new Text();
}
}
运行结果: