用java设计一个简易记事本程序,实现打开、保存等功能
时间: 2024-03-13 14:42:50 浏览: 33
好的,这个任务可以分成以下几个步骤实现:
1. 创建 GUI 界面,包括菜单栏、文本框等组件。
2. 实现打开文件功能:当用户点击菜单栏的“打开”选项时,弹出文件选择框,用户选择文件后,程序读取文件内容并显示在文本框中。
3. 实现保存文件功能:当用户点击菜单栏的“保存”选项时,程序将文本框中的内容保存到文件中。
4. 实现另存为功能:当用户点击菜单栏的“另存为”选项时,弹出文件保存框,用户选择保存路径和文件名后,程序将文本框中的内容保存到指定路径的文件中。
下面是一个简单的实现:
```java
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class SimpleNotePad extends JFrame implements ActionListener {
private JTextArea textArea;
private String fileName;
private boolean saved;
public SimpleNotePad() {
super("Simple NotePad");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 400);
setLocationRelativeTo(null);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem openItem = new JMenuItem("打开");
JMenuItem saveItem = new JMenuItem("保存");
JMenuItem saveAsItem = new JMenuItem("另存为");
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveAsItem.addActionListener(this);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveAsItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
// 创建文本框
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
Container contentPane = getContentPane();
contentPane.add(scrollPane, BorderLayout.CENTER);
setVisible(true);
saved = true;
}
public static void main(String[] args) {
new SimpleNotePad();
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("打开")) {
openFile();
} else if (command.equals("保存")) {
saveFile();
} else if (command.equals("另存为")) {
saveFileAs();
}
}
private void openFile() {
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
fileName = file.getAbsolutePath();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
textArea.setText(sb.toString());
reader.close();
saved = true;
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "打开文件失败:" + e.getMessage());
}
}
}
private void saveFile() {
if (fileName == null) {
saveFileAs();
} else {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
writer.write(textArea.getText());
writer.close();
saved = true;
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "保存文件失败:" + e.getMessage());
}
}
}
private void saveFileAs() {
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
fileName = file.getAbsolutePath();
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(textArea.getText());
writer.close();
saved = true;
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "保存文件失败:" + e.getMessage());
}
}
}
}
```
这个程序使用了 Java 的 Swing 组件实现 GUI 界面,实现了打开、保存、另存为等功能。当用户进行修改后,程序会自动标记为“未保存”,当用户进行保存操作后,程序会将修改的内容保存到文件中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)