帮我用java写一个简易记事本程序,有打开,保存,编辑的功能,并且把打开和保存放名字为文件的菜单组件里的
时间: 2024-03-11 17:49:11 浏览: 139
好的,下面是一个简单的Java记事本程序,具备打开、保存、编辑的功能,同时将打开和保存放在名为“文件”的菜单组件中:
```java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
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;
import javax.swing.UIManager;
public class SimpleNotepad extends JFrame {
private JTextArea textArea;
private JFileChooser fileChooser;
private File currentFile;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
new SimpleNotepad().setVisible(true);
}
public SimpleNotepad() {
setTitle("Simple Notepad");
setSize(500, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
textArea = new JTextArea();
add(new JScrollPane(textArea), BorderLayout.CENTER);
fileChooser = new JFileChooser();
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem openMenuItem = new JMenuItem("打开");
JMenuItem saveMenuItem = new JMenuItem("保存");
JMenuItem exitMenuItem = new JMenuItem("退出");
openMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int result = fileChooser.showOpenDialog(SimpleNotepad.this);
if (result == JFileChooser.APPROVE_OPTION) {
try {
currentFile = fileChooser.getSelectedFile();
BufferedReader reader = new BufferedReader(new FileReader(currentFile));
String line = null;
while ((line = reader.readLine()) != null) {
textArea.append(line + "\n");
}
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (currentFile == null) {
int result = fileChooser.showSaveDialog(SimpleNotepad.this);
if (result == JFileChooser.APPROVE_OPTION) {
currentFile = fileChooser.getSelectedFile();
}
}
if (currentFile != null) {
try {
FileWriter writer = new FileWriter(currentFile);
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
}
}
```
程序中,我们创建了一个`SimpleNotepad`类,继承自`JFrame`,表示我们的记事本程序是一个窗口应用程序。在`SimpleNotepad`构造函数中,我们创建了一个`JTextArea`对象,用于显示文本内容,并将其添加到窗口的中央位置。同时,我们创建了一个`JFileChooser`对象,用于选择打开或保存的文件。
接下来,我们创建了一个`JMenuBar`对象,用于显示程序的菜单栏。其中,我们创建了一个名为“文件”的`JMenu`对象,并在其中添加了“打开”、“保存”和“退出”三个`JMenuItem`对象。对于“打开”和“保存”菜单项,我们分别添加了`ActionListener`,当用户点击这些菜单项时,会触发相应的事件处理程序:
- 打开:打开一个文件,并将文件内容显示在`JTextArea`中。
- 保存:将文本框中的内容保存到文件中。如果当前没有打开任何文件,则会弹出“保存为”对话框,让用户选择保存位置和文件名。
最后,在`main`函数中,我们创建了一个`SimpleNotepad`对象,并将其设置为可见。
阅读全文