java创建一个功能完好的记事本程序 增 删 改 查
时间: 2023-05-15 22:05:20 浏览: 169
可以使用Java Swing库来创建一个记事本程序,以下是一个简单的实现:
1. 创建一个JFrame窗口,并设置标题为“记事本”。
2. 在窗口中添加一个JTextArea组件,用于显示和编辑文本。
3. 在窗口中添加一个JMenuBar组件,用于添加菜单。
4. 在菜单中添加“文件”和“编辑”两个菜单项。
5. 在“文件”菜单中添加“新建”、“打开”、“保存”和“退出”四个子菜单项,分别用于创建新文件、打开已有文件、保存文件和退出程序。
6. 在“编辑”菜单中添加“剪切”、“复制”和“粘贴”三个子菜单项,分别用于剪切、复制和粘贴文本。
以下是代码实现:
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;
import javax.swing.KeyStroke;
public class Notepad extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextArea textArea;
private JFileChooser fileChooser;
private String currentFile;
public Notepad() {
super("记事本");
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// 创建文本区域
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane, BorderLayout.CENTER);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建文件菜单
JMenu fileMenu = new JMenu("文件");
menuBar.add(fileMenu);
// 创建新建菜单项
JMenuItem newMenuItem = new JMenuItem("新建");
newMenuItem.setAccelerator(KeyStroke.getKeyStroke('N', java.awt.event.InputEvent.CTRL_MASK));
newMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newFile();
}
});
fileMenu.add(newMenuItem);
// 创建打开菜单项
JMenuItem openMenuItem = new JMenuItem("打开");
openMenuItem.setAccelerator(KeyStroke.getKeyStroke('O', java.awt.event.InputEvent.CTRL_MASK));
openMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
openFile();
}
});
fileMenu.add(openMenuItem);
// 创建保存菜单项
JMenuItem saveMenuItem = new JMenuItem("保存");
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke('S', java.awt.event.InputEvent.CTRL_MASK));
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveFile();
}
});
fileMenu.add(saveMenuItem);
// 创建退出菜单项
JMenuItem exitMenuItem = new JMenuItem("退出");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(exitMenuItem);
// 创建编辑菜单
JMenu editMenu = new JMenu("编辑");
menuBar.add(editMenu);
// 创建剪切菜单项
JMenuItem cutMenuItem = new JMenuItem("剪切");
cutMenuItem.setAccelerator(KeyStroke.getKeyStroke('X', java.awt.event.InputEvent.CTRL_MASK));
cutMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.cut();
}
});
editMenu.add(cutMenuItem);
// 创建复制菜单项
JMenuItem copyMenuItem = new JMenuItem("复制");
copyMenuItem.setAccelerator(KeyStroke.getKeyStroke('C', java.awt.event.InputEvent.CTRL_MASK));
copyMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.copy();
}
});
editMenu.add(copyMenuItem);
// 创建粘贴菜单项
JMenuItem pasteMenuItem = new JMenuItem("粘贴");
pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke('V', java.awt.event.InputEvent.CTRL_MASK));
pasteMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.paste();
}
});
editMenu.add(pasteMenuItem);
// 创建文件选择器
fileChooser = new JFileChooser();
setVisible(true);
}
// 新建文件
private void newFile() {
textArea.setText("");
currentFile = null;
}
// 打开文件
private void openFile() {
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.getAbsolutePath();
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "打开文件失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
// 保存文件
private void saveFile() {
if (currentFile == null) {
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
currentFile = file.getAbsolutePath();
} else {
return;
}
}
try {
FileWriter writer = new FileWriter(currentFile);
writer.write(textArea.getText());
writer.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "保存文件失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
new Notepad();
}
}
希望对你有帮助!
阅读全文