用java如何写一个记事本
时间: 2024-03-23 10:44:05 浏览: 83
要用Java写一个记事本,可以使用Java Swing库中的JFrame、JMenu、JMenuItem、JTextArea等组件。下面是一个简单的记事本示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyNotepad {
private JFrame frame;
private JTextArea textArea;
private JFileChooser fileChooser;
public MyNotepad() {
// 创建窗口容器
frame = new JFrame("My Notepad");
frame.setSize(800, 600); // 设置窗口大小
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
// 创建文件菜单
JMenu fileMenu = new JMenu("File");
JMenuItem newFileMenuItem = new JMenuItem("New");
JMenuItem openFileMenuItem = new JMenuItem("Open");
JMenuItem saveFileMenuItem = new JMenuItem("Save");
JMenuItem saveAsFileMenuItem = new JMenuItem("Save As");
JMenuItem exitMenuItem = new JMenuItem("Exit");
// 添加文件菜单项的事件监听器
newFileMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newFile();
}
});
openFileMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
openFile();
}
});
saveFileMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveFile();
}
});
saveAsFileMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveAsFile();
}
});
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
// 将文件菜单项添加到文件菜单中
fileMenu.add(newFileMenuItem);
fileMenu.add(openFileMenuItem);
fileMenu.add(saveFileMenuItem);
fileMenu.add(saveAsFileMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
// 将文件菜单添加到菜单栏中
menuBar.add(fileMenu);
// 将菜单栏添加到窗口中
frame.setJMenuBar(menuBar);
// 创建文本区域
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
// 将文本区域添加到窗口中
frame.add(scrollPane);
// 创建文件选择器
fileChooser = new JFileChooser();
// 显示窗口
frame.setVisible(true);
}
// 新建文件
private void newFile() {
textArea.setText("");
frame.setTitle("My Notepad");
}
// 打开文件
private void openFile() {
int result = fileChooser.showOpenDialog(frame);
if (result == JFileChooser.APPROVE_OPTION) {
try {
File file = fileChooser.getSelectedFile();
FileReader reader = new FileReader(file);
textArea.read(reader, null);
reader.close();
frame.setTitle("My Notepad - " + file.getName());
} catch (IOException ex) {
JOptionPane.showMessageDialog(frame, "Error opening file: " + ex.getMessage());
}
}
}
// 保存文件
private void saveFile() {
File file = fileChooser.getSelectedFile();
if (file != null) {
try {
FileWriter writer = new FileWriter(file);
textArea.write(writer);
writer.close();
frame.setTitle("My Notepad - " + file.getName());
} catch (IOException ex) {
JOptionPane.showMessageDialog(frame, "Error saving file: " + ex.getMessage());
}
}
}
// 另存为文件
private void saveAsFile() {
int result = fileChooser.showSaveDialog(frame);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
FileWriter writer = new FileWriter(file);
textArea.write(writer);
writer.close();
frame.setTitle("My Notepad - " + file.getName());
} catch (IOException ex) {
JOptionPane.showMessageDialog(frame, "Error saving file: " + ex.getMessage());
}
}
}
public static void main(String[] args) {
new MyNotepad();
}
}
```
运行该程序,就可以在窗口中看到一个简单的记事本。在代码中,实现了新建、打开、保存、另存为和退出等功能,可以通过菜单栏或键盘快捷键来操作。其中,使用JFileChooser组件来实现文件选择器,使用FileReader和FileWriter类来读写文件,使用JOptionPane类来显示错误提示信息。
阅读全文