java实现记事本界面
时间: 2023-08-28 16:06:45 浏览: 60
要实现记事本界面,可以使用 Java Swing GUI 库来构建用户界面。以下是一个简单的记事本界面的实现,包括菜单栏、工具栏、文本区和状态栏等。
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyNotepad extends JFrame implements ActionListener {
private JTextArea textArea;
private JFileChooser fileChooser;
private String currentFile = "Untitled";
private boolean isSaved = true;
public MyNotepad() {
super("My Notepad");
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建文件菜单
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
// 创建打开菜单项
JMenuItem openItem = new JMenuItem("Open");
openItem.addActionListener(this);
fileMenu.add(openItem);
// 创建保存菜单项
JMenuItem saveItem = new JMenuItem("Save");
saveItem.addActionListener(this);
fileMenu.add(saveItem);
// 创建另存为菜单项
JMenuItem saveAsItem = new JMenuItem("Save As");
saveAsItem.addActionListener(this);
fileMenu.add(saveAsItem);
// 添加分隔符
fileMenu.addSeparator();
// 创建退出菜单项
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(this);
fileMenu.add(exitItem);
// 创建工具栏
JToolBar toolBar = new JToolBar();
add(toolBar, BorderLayout.NORTH);
// 创建打开工具按钮
JButton openButton = new JButton(new ImageIcon("open.png"));
openButton.addActionListener(this);
toolBar.add(openButton);
// 创建保存工具按钮
JButton saveButton = new JButton(new ImageIcon("save.png"));
saveButton.addActionListener(this);
toolBar.add(saveButton);
// 添加分隔符
toolBar.addSeparator();
// 创建文本区
textArea = new JTextArea();
add(new JScrollPane(textArea), BorderLayout.CENTER);
// 创建状态栏
JLabel statusLabel = new JLabel("Ready");
add(statusLabel, BorderLayout.SOUTH);
// 创建文件选择器
fileChooser = new JFileChooser(".");
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("Open")) {
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
String fileName = fileChooser.getSelectedFile().getPath();
currentFile = fileName;
setTitle(currentFile);
isSaved = true;
try {
textArea.setText("");
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.FileReader(fileName));
String line = null;
while ((line = reader.readLine()) != null) {
textArea.append(line);
textArea.append("\n");
}
reader.close();
} catch (java.io.IOException ex) {
ex.printStackTrace();
}
}
} else if (command.equals("Save")) {
if (isSaved) {
try {
java.io.BufferedWriter writer = new java.io.BufferedWriter(new java.io.FileWriter(currentFile));
writer.write(textArea.getText());
writer.close();
} catch (java.io.IOException ex) {
ex.printStackTrace();
}
} else {
actionPerformed(new ActionEvent(this, 0, "Save As"));
}
} else if (command.equals("Save As")) {
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
String fileName = fileChooser.getSelectedFile().getPath();
currentFile = fileName;
setTitle(currentFile);
isSaved = true;
try {
java.io.BufferedWriter writer = new java.io.BufferedWriter(new java.io.FileWriter(currentFile));
writer.write(textArea.getText());
writer.close();
} catch (java.io.IOException ex) {
ex.printStackTrace();
}
}
} else if (command.equals("Exit")) {
System.exit(0);
}
}
public static void main(String[] args) {
MyNotepad notepad = new MyNotepad();
notepad.setSize(800, 600);
notepad.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
notepad.setVisible(true);
}
}
```
在该代码中,我们使用了 JFrame、JMenuBar、JMenu、JMenuItem、JToolBar 和 JTextArea 等 Swing 组件来构建记事本界面。我们还使用了 JFileChooser 组件来支持文件的打开和保存操作。其中,菜单栏和工具栏的事件处理都委托给了 MyNotepad 类本身来处理。