上一篇
java记事本怎么运行
- 后端开发
- 2025-08-14
- 1
下载JDK并配置环境变量;用文本编辑器写Java代码保存为
XXX.java
;CMD中进入文件目录,输入
javac XXX.java
编译,再输入
java XXX
前期准备
必要工具安装
工具名称 | 作用 | 下载地址 | 备注 |
---|---|---|---|
JDK | Java开发工具包 | Oracle官网/OpenJDK | 需配置JAVA_HOME 环境变量 |
文本编辑器 | 编写源代码 | Notepad++/VS Code/Sublime Text | 推荐支持语法高亮的工具 |
命令行终端 | 编译/运行Java程序 | Windows CMD/Linux/macOS终端 | |
可选 IDE | 集成开发环境 | Eclipse/IntelliJ IDEA/NetBeans | 简化项目管理与调试 |
目录结构规划
建议创建如下层级的项目文件夹:
MyNotepadProject/
├── src/ # 存放Java源代码
│ └── com/example/ # 包名(自定义)
│ └── SimpleNotepad.java
└── data/ # 用于存储用户文件(可选)
核心代码实现
以下是一个基于Swing的极简记事本完整代码(SimpleNotepad.java
):
package com.example; import javax.swing.; import java.awt.; import java.awt.event.; import java.io.; public class SimpleNotepad extends JFrame { private JTextArea textArea; private String currentFilePath = ""; public SimpleNotepad() { // 初始化窗口属性 setTitle("Java简易记事本"); setSize(800, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // 居中显示 // 创建菜单栏 JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("文件(F)"); JMenuItem newItem = new JMenuItem("新建"); JMenuItem openItem = new JMenuItem("打开..."); JMenuItem saveItem = new JMenuItem("保存"); JMenuItem exitItem = new JMenuItem("退出"); // 添加菜单项到菜单 fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.addSeparator(); fileMenu.add(exitItem); menuBar.add(fileMenu); setJMenuBar(menuBar); // 创建文本编辑区 textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); add(scrollPane, BorderLayout.CENTER); // 绑定事件监听器 newItem.addActionListener(e -> textArea.setText("")); openItem.addActionListener(this::openFile); saveItem.addActionListener(this::saveFile); exitItem.addActionListener(e -> System.exit(0)); } // 打开文件方法 private void openFile(ActionEvent e) { JFileChooser fileChooser = new JFileChooser(); int result = fileChooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); currentFilePath = selectedFile.getAbsolutePath(); try (BufferedReader reader = new BufferedReader(new FileReader(selectedFile))) { StringBuilder content = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { content.append(line).append("n"); } textArea.setText(content.toString()); } catch (IOException ex) { JOptionPane.showMessageDialog(this, "文件读取失败: " + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE); } } } // 保存文件方法 private void saveFile(ActionEvent e) { if (!currentFilePath.isEmpty()) { // 直接保存到已有文件 writeToFile(currentFilePath); } else { // 首次保存触发另存为 saveAsFile(); } } // 另存为方法 private void saveAsFile() { JFileChooser fileChooser = new JFileChooser(); int result = fileChooser.showSaveDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); currentFilePath = selectedFile.getAbsolutePath(); writeToFile(currentFilePath); } } // 通用文件写入方法 private void writeToFile(String filePath) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { writer.write(textArea.getText()); JOptionPane.showMessageDialog(this, "文件保存成功!", "提示", JOptionPane.INFORMATION_MESSAGE); } catch (IOException ex) { JOptionPane.showMessageDialog(this, "文件保存失败: " + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE); } } public static void main(String[] args) { // 确保GUI在事件调度线程中运行 SwingUtilities.invokeLater(() -> { new SimpleNotepad().setVisible(true); }); } }
编译与运行步骤
方法一:通过命令行手动操作
- 定位到源码目录
打开终端/CMD,进入src
目录(假设项目结构如前所述):cd path/to/MyNotepadProject/src/com/example/
- 编译Java文件
执行以下命令生成.class
字节码文件:javac SimpleNotepad.java
▶️ 成功标志:无报错且生成
SimpleNotepad.class
文件。 - 运行程序
输入以下命令启动记事本:java SimpleNotepad
▶️ 注意:若出现
Error: Could not find or load main class
,请检查三点:①当前目录是否包含SimpleNotepad.class
;②类名拼写是否正确;③是否已正确安装JDK。
️ 方法二:通过IDE运行(以IntelliJ IDEA为例)
- 导入项目
打开IDE →File
→Open
→ 选择项目根目录。 - 创建运行配置
右键点击SimpleNotepad.java
→Run 'SimpleNotepad.main()'
。 - 调试与修改
可直接在IDE中修改代码后重新运行,无需手动编译。
功能扩展建议
功能 | 实现思路 | 涉及技术点 |
---|---|---|
字体大小调整 | 添加下拉框选择字体尺寸,动态修改JTextArea 的字体属性 |
Font 类、动作监听器 |
查找替换 | 弹出对话框输入关键词,调用JTextArea 的replaceRange() 方法实现替换 |
正则表达式、字符串处理 |
状态栏显示光标位置 | 添加JLabel 作为状态栏,监听文本区焦点事件并实时更新字符计数 |
文档监听器、布局管理器 |
多标签页 | 改用JTabbedPane 替代单一文本区,支持多个文档同时编辑 |
复合布局、集合管理 |
常见问题排查
Q1: 运行时提示ClassNotFoundException
怎么办?
原因:类路径(Classpath)未正确设置,导致JVM找不到目标类。
解决方案:
- 命令行运行时需切换到
.class
文件所在目录; - IDE中检查模块依赖配置;
- 确保类名与文件名完全一致(区分大小写)。
Q2: 保存文件时报Access Denied
错误?
原因:程序没有权限向指定路径写入文件。
解决方案:
- 更换保存路径至用户主目录或桌面;
- 在代码中捕获
SecurityException
并提供友好提示; - Windows系统右键点击程序图标→属性→兼容性→勾选“以管理员身份运行”。
相关问答FAQs
Q: 这个记事本能打开Word文档吗?
A: 不能直接打开.docx
格式文件,本程序仅支持纯文本文件(.txt
),如需支持富文本,需改用JEditorPane
并集成RTF解析库。
Q: 如何让记事本记住上次打开的文件列表?
A: 可通过以下步骤实现:
- 使用
Preferences API
或配置文件(如properties
文件)存储历史记录; - 每次启动时读取历史记录并更新菜单;
- 添加“最近打开”子菜单项,绑定双击事件打开对应文件。
示例代码片段:// 保存最近打开的文件路径到数组 String[] recentFiles = new String[5]; // 最多记录5个文件 // 读取/写入逻辑需结合文件