用java写有“文件”功能菜单包括“建新”、“打开”、“保存”、“另存为”和一个“退出”功能的记事本
时间: 2023-07-31 09:05:08 浏览: 145
SCBX处理器的写缓存区-第4章ARM存储器组织和异常中断
好的,我可以为您提供一份基于 Java 编写的记事本。
首先我们需要创建一个 GUI 窗口,然后添加相关的菜单和事件监听器。
以下是代码示例:
```java
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
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.KeyStroke;
public class MyNotepad extends JFrame {
private static final long serialVersionUID = 1L;
private TextArea textArea;
private File currentFile;
public MyNotepad() {
super("My Notepad");
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建 "文件" 菜单
JMenu fileMenu = new JMenu("文件");
fileMenu.setMnemonic(KeyEvent.VK_F);
menuBar.add(fileMenu);
// "新建" 菜单项
JMenuItem newMenuItem = new JMenuItem("新建");
newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
newMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newFile();
}
});
fileMenu.add(newMenuItem);
// "打开" 菜单项
JMenuItem openMenuItem = new JMenuItem("打开");
openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
openMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
openFile();
}
});
fileMenu.add(openMenuItem);
// "保存" 菜单项
JMenuItem saveMenuItem = new JMenuItem("保存");
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveFile();
}
});
fileMenu.add(saveMenuItem);
// "另存为" 菜单项
JMenuItem saveAsMenuItem = new JMenuItem("另存为");
saveAsMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveAsFile();
}
});
fileMenu.add(saveAsMenuItem);
// 添加分割线
fileMenu.addSeparator();
// "退出" 菜单项
JMenuItem exitMenuItem = new JMenuItem("退出");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(exitMenuItem);
// 创建文本区域
textArea = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
textArea.setPreferredSize(new Dimension(800, 600));
// 将文本区域添加到窗口
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(textArea, BorderLayout.CENTER);
// 设置窗口大小和可见性
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setVisible(true);
}
// 新建文件
private void newFile() {
currentFile = null;
textArea.setText("");
}
// 打开文件
private void openFile() {
JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
currentFile = fc.getSelectedFile();
try {
BufferedReader reader = new BufferedReader(new FileReader(currentFile));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
reader.close();
textArea.setText(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 保存文件
private void saveFile() {
if (currentFile != null) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(currentFile));
writer.write(textArea.getText());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
saveAsFile();
}
}
// 另存为文件
private void saveAsFile() {
JFileChooser fc = new JFileChooser();
if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
currentFile = fc.getSelectedFile();
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(currentFile));
writer.write(textArea.getText());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new MyNotepad();
}
}
```
使用以上代码可以创建一个基本的记事本,具有“新建”、“打开”、“保存”、“另存为”和“退出”功能。
阅读全文