利用Java Swing 图形组件开发一个图形化简易记事本。记事本功能包括文本编辑、保存文本到指定路径、打开指定路径下的文本、退出等。菜单中的三个选项均应能正常实现功能。
时间: 2023-06-25 21:06:27 浏览: 78
好的,以下是一个简单的Java Swing记事本的实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class SimpleNotepad extends JFrame implements ActionListener {
private JTextArea textArea;
private JMenuBar menuBar;
private JMenu fileMenu, editMenu, helpMenu;
private JMenuItem newMenuItem, openMenuItem, saveMenuItem, exitMenuItem, cutMenuItem, copyMenuItem,
pasteMenuItem, aboutMenuItem;
private File file;
public SimpleNotepad() {
setTitle("Simple Notepad");
setSize(600, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane);
menuBar = new JMenuBar();
fileMenu = new JMenu("File");
editMenu = new JMenu("Edit");
helpMenu = new JMenu("Help");
newMenuItem = new JMenuItem("New");
openMenuItem = new JMenuItem("Open");
saveMenuItem = new JMenuItem("Save");
exitMenuItem = new JMenuItem("Exit");
cutMenuItem = new JMenuItem("Cut");
copyMenuItem = new JMenuItem("Copy");
pasteMenuItem = new JMenuItem("Paste");
aboutMenuItem = new JMenuItem("About");
fileMenu.add(newMenuItem);
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
editMenu.add(cutMenuItem);
editMenu.add(copyMenuItem);
editMenu.add(pasteMenuItem);
helpMenu.add(aboutMenuItem);
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
newMenuItem.addActionListener(this);
openMenuItem.addActionListener(this);
saveMenuItem.addActionListener(this);
exitMenuItem.addActionListener(this);
cutMenuItem.addActionListener(this);
copyMenuItem.addActionListener(this);
pasteMenuItem.addActionListener(this);
aboutMenuItem.addActionListener(this);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == newMenuItem) {
textArea.setText("");
file = null;
} else if (e.getSource() == openMenuItem) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null) {
textArea.append(line + "\n");
}
reader.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
} else if (e.getSource() == saveMenuItem) {
if (file == null) {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
}
}
if (file != null) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
} else if (e.getSource() == exitMenuItem) {
System.exit(0);
} else if (e.getSource() == cutMenuItem) {
textArea.cut();
} else if (e.getSource() == copyMenuItem) {
textArea.copy();
} else if (e.getSource() == pasteMenuItem) {
textArea.paste();
} else if (e.getSource() == aboutMenuItem) {
JOptionPane.showMessageDialog(this, "Simple Notepad v1.0", "About", JOptionPane.INFORMATION_MESSAGE);
}
}
public static void main(String[] args) {
new SimpleNotepad();
}
}
```
这个记事本可以进行文本编辑、保存文本到指定路径、打开指定路径下的文本、退出等功能。通过菜单的选项可以实现这些功能。