javagui记事本
时间: 2023-11-20 07:58:34 浏览: 49
以下是一个Java GUI记事本的实现,包括“文件”菜单中的“新建”、“打开”、“保存”、“另存为”和“退出”功能:
```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;
public class JavaGUI记事本 extends JFrame implements ActionListener {
private JTextArea textArea;
private JFileChooser fileChooser;
private File currentFile;
public JavaGUI记事本() {
setTitle("Java GUI记事本");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建“文件”菜单
JMenu fileMenu = new JMenu("文件");
menuBar.add(fileMenu);
// 创建“新建”菜单项
JMenuItem newMenuItem = new JMenuItem("新建");
newMenuItem.addActionListener(this);
fileMenu.add(newMenuItem);
// 创建“打开”菜单项
JMenuItem openMenuItem = new JMenuItem("打开");
openMenuItem.addActionListener(this);
fileMenu.add(openMenuItem);
// 创建“保存”菜单项
JMenuItem saveMenuItem = new JMenuItem("保存");
saveMenuItem.addActionListener(this);
fileMenu.add(saveMenuItem);
// 创建“另存为”菜单项
JMenuItem saveAsMenuItem = new JMenuItem("另存为");
saveAsMenuItem.addActionListener(this);
fileMenu.add(saveAsMenuItem);
// 创建“退出”菜单项
JMenuItem exitMenuItem = new JMenuItem("退出");
exitMenuItem.addActionListener(this);
fileMenu.add(exitMenuItem);
// 创建文本区域
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane, BorderLayout.CENTER);
// 创建文件选择器
fileChooser = new JFileChooser();
}
// 处理菜单项的动作事件
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("新建")) {
newFile();
} else if (command.equals("打开")) {
openFile();
} else if (command.equals("保存")) {
saveFile();
} else if (command.equals("另存为")) {
saveAsFile();
} else if (command.equals("退出")) {
exit();
}
}
// 新建文件
private void newFile() {
if (textArea.getText().length() > 0) {
int option = JOptionPane.showConfirmDialog(this, "是否保存当前文件?", "提示", JOptionPane.YES_NO_CANCEL_OPTION);
if (option == JOptionPane.YES_OPTION) {
saveFile();
} else if (option == JOptionPane.CANCEL_OPTION) {
return;
}
}
textArea.setText("");
currentFile = null;
}
// 打开文件
private void openFile() {
if (textArea.getText().length() > 0) {
int option = JOptionPane.showConfirmDialog(this, "是否保存当前文件?", "提示", JOptionPane.YES_NO_CANCEL_OPTION);
if (option == JOptionPane.YES_OPTION) {
saveFile();
} else if (option == JOptionPane.CANCEL_OPTION) {
return;
}
}
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
reader.close();
textArea.setText(sb.toString());
currentFile = file;
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "打开文件失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
// 保存文件
private void saveFile() {
if (currentFile == null) {
saveAsFile();
} else {
try {
FileWriter writer = new FileWriter(currentFile);
writer.write(textArea.getText());
writer.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "保存文件失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
// 另存为文件
private void saveAsFile() {
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
FileWriter writer = new FileWriter(file);
writer.write(textArea.getText());
writer.close();
currentFile = file;
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "保存文件失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
// 退出程序
private void exit() {
if (textArea.getText().length() > 0) {
int option = JOptionPane.showConfirmDialog(this, "是否保存当前文件?", "提示", JOptionPane.YES_NO_CANCEL_OPTION);
if (option == JOptionPane.YES_OPTION) {
saveFile();
} else if (option == JOptionPane.CANCEL_OPTION) {
return;
}
}
System.exit(0);
}
public static void main(String[] args) {
JavaGUI记事本 frame = new JavaGUI记事本();
frame.setVisible(true);
}
}
```