java 程序模仿实现记事本功能
时间: 2023-11-28 08:05:46 浏览: 220
实现记事本功能的Java程序,可以通过以下步骤完成:
1. 创建一个GUI界面,包括菜单栏、工具栏、文本区域等组件。
2. 添加“新建”、“打开”、“保存”、“另存为”等菜单项,并为其添加相应的事件处理。
3. 在事件处理中,使用JFileChooser类实现文件的选择和保存,通过FileReader和FileWriter类读写文件内容。
4. 添加“剪切”、“复制”、“粘贴”等编辑功能,并为其添加相应的事件处理。
5. 添加“查找”、“替换”等功能,并为其添加相应的事件处理。
6. 添加“字体”、“颜色”等设置功能,并为其添加相应的事件处理。
下面是一个简单的Java程序,实现了基本的记事本功能:
```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class Notepad extends JFrame implements ActionListener {
private JTextArea textArea;
private JScrollPane scrollPane;
private JFileChooser fileChooser;
private File file;
public Notepad() {
super("记事本");
setSize(800, 600);
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);
// 创建“编辑”菜单
JMenu editMenu = new JMenu("编辑");
menuBar.add(editMenu);
// 创建“剪切”菜单项,并添加事件处理
JMenuItem cutMenuItem = new JMenuItem("剪切");
cutMenuItem.addActionListener(this);
editMenu.add(cutMenuItem);
// 创建“复制”菜单项,并添加事件处理
JMenuItem copyMenuItem = new JMenuItem("复制");
copyMenuItem.addActionListener(this);
editMenu.add(copyMenuItem);
// 创建“粘贴”菜单项,并添加事件处理
JMenuItem pasteMenuItem = new JMenuItem("粘贴");
pasteMenuItem.addActionListener(this);
editMenu.add(pasteMenuItem);
// 创建“查找”菜单项,并添加事件处理
JMenuItem findMenuItem = new JMenuItem("查找");
findMenuItem.addActionListener(this);
editMenu.add(findMenuItem);
// 创建“替换”菜单项,并添加事件处理
JMenuItem replaceMenuItem = new JMenuItem("替换");
replaceMenuItem.addActionListener(this);
editMenu.add(replaceMenuItem);
// 创建“设置”菜单
JMenu settingMenu = new JMenu("设置");
menuBar.add(settingMenu);
// 创建“字体”菜单项,并添加事件处理
JMenuItem fontMenuItem = new JMenuItem("字体");
fontMenuItem.addActionListener(this);
settingMenu.add(fontMenuItem);
// 创建“颜色”菜单项,并添加事件处理
JMenuItem colorMenuItem = new JMenuItem("颜色");
colorMenuItem.addActionListener(this);
settingMenu.add(colorMenuItem);
// 创建文本区域,并添加滚动条
textArea = new JTextArea();
textArea.setFont(new Font("宋体", Font.PLAIN, 16));
scrollPane = new JScrollPane(textArea);
getContentPane().add(scrollPane, BorderLayout.CENTER);
// 创建文件选择器
fileChooser = new JFileChooser();
}
// 事件处理
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
switch (command) {
case "新建":
textArea.setText("");
file = null;
break;
case "打开":
int openResult = fileChooser.showOpenDialog(this);
if (openResult == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
try {
FileReader reader = new FileReader(file);
textArea.read(reader, null);
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
break;
case "保存":
if (file == null) {
int saveResult = fileChooser.showSaveDialog(this);
if (saveResult == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
}
}
if (file != null) {
try {
FileWriter writer = new FileWriter(file);
textArea.write(writer);
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
break;
case "另存为":
int saveAsResult = fileChooser.showSaveDialog(this);
if (saveAsResult == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
try {
FileWriter writer = new FileWriter(file);
textArea.write(writer);
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
break;
case "剪切":
textArea.cut();
break;
case "复制":
textArea.copy();
break;
case "粘贴":
textArea.paste();
break;
case "查找":
String findStr = JOptionPane.showInputDialog(this, "查找:");
if (findStr != null && !findStr.equals("")) {
String text = textArea.getText();
int index = text.indexOf(findStr);
if (index >= 0) {
textArea.setSelectionStart(index);
textArea.setSelectionEnd(index + findStr.length());
} else {
JOptionPane.showMessageDialog(this, "未找到:" + findStr);
}
}
break;
case "替换":
String replaceStr = JOptionPane.showInputDialog(this, "查找并替换:");
if (replaceStr != null && !replaceStr.equals("")) {
String text = textArea.getText();
String replaceTo = JOptionPane.showInputDialog(this, "替换为:");
if (replaceTo != null) {
text = text.replace(replaceStr, replaceTo);
textArea.setText(text);
}
}
break;
case "字体":
Font font = JFontChooser.showDialog(this, "选择字体", textArea.getFont());
if (font != null) {
textArea.setFont(font);
}
break;
case "颜色":
Color color = JColorChooser.showDialog(this, "选择颜色", textArea.getForeground());
if (color != null) {
textArea.setForeground(color);
}
break;
default:
break;
}
}
public static void main(String[] args) {
Notepad notepad = new Notepad();
notepad.setVisible(true);
}
}
```
运行程序,即可打开一个基本的记事本界面,支持文件的新建、打开、保存、另存为、剪切、复制、粘贴、查找、替换、字体和颜色等功能。
阅读全文