实验三 仿记事本
一、实验目的:
能够掌握常用组件的基本操作以及输入输出流的使用
项目性质:设计型
二、实验内容:
1、设计一个仿记事本软件
2、实现新建、打开、保存、另存为等基本功能
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
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;
public class SimpleNotepad extends JFrame implements ActionListener {
private JTextArea textArea;
private JScrollPane scrollPane;
private JFileChooser fileChooser;
public SimpleNotepad() {
// 设置窗口属性
setTitle("Simple Notepad");
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建文本区域和滚动面板
textArea = new JTextArea();
scrollPane = new JScrollPane(textArea);
getContentPane().add(scrollPane, BorderLayout.CENTER);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建文件菜单
JMenu fileMenu = new JMenu("文件");
menuBar.add(fileMenu);
// 添加菜单项和事件监听器
String[] fileItems = {"新建", "打开", "保存", "另存为", "退出"};
for (String itemText : fileItems) {
JMenuItem menuItem = new JMenuItem(itemText);
menuItem.addActionListener(this);
fileMenu.add(menuItem);
}
// 创建文件选择器
fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件 (*.txt)", "txt"));
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
switch (command) {
case "新建":
textArea.setText("");
break;
case "打开":
openFile();
break;
case "保存":
saveFile(false);
break;
case "另存为":
saveFile(true);
break;
case "退出":
System.exit(0);
break;
}
}
private void openFile() {
if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
try (BufferedReader reader = new BufferedReader(new FileReader(selectedFile))) {
textArea.read(reader, null);
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "打开文件时出错: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
private void saveFile(boolean saveAs) {
if (saveAs || fileChooser.getSelectedFile() == null) {
fileChooser.setSelectedFile(null);
if (fileChooser.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) {
return;
}
}
File selectedFile = fileChooser.getSelectedFile();
try (FileWriter writer = new FileWriter(selectedFile)) {
textArea.write(writer);
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "保存文件时出错: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
SimpleNotepad notepad = new SimpleNotepad();
notepad.setVisible(true);
});
}
}