java记事本怎么运行

下载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 简化项目管理与调试

目录结构规划

建议创建如下层级的项目文件夹:

java记事本怎么运行

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);
        });
    }
}

编译与运行步骤

✅ 方法一:通过命令行手动操作

  1. 定位到源码目录
    打开终端/CMD,进入src目录(假设项目结构如前所述):

    cd path/to/MyNotepadProject/src/com/example/
  2. 编译Java文件
    执行以下命令生成.class字节码文件:

    javac SimpleNotepad.java

    ▶️ 成功标志:无报错且生成SimpleNotepad.class文件。

  3. 运行程序
    输入以下命令启动记事本:

    java SimpleNotepad

    ▶️ 注意:若出现Error: Could not find or load main class,请检查三点:①当前目录是否包含SimpleNotepad.class;②类名拼写是否正确;③是否已正确安装JDK。

    java记事本怎么运行

🖥️ 方法二:通过IDE运行(以IntelliJ IDEA为例)

  1. 导入项目
    打开IDE → FileOpen → 选择项目根目录。
  2. 创建运行配置
    右键点击SimpleNotepad.javaRun 'SimpleNotepad.main()'
  3. 调试与修改
    可直接在IDE中修改代码后重新运行,无需手动编译。

功能扩展建议

功能 实现思路 涉及技术点
字体大小调整 添加下拉框选择字体尺寸,动态修改JTextArea的字体属性 Font类、动作监听器
查找替换 弹出对话框输入关键词,调用JTextAreareplaceRange()方法实现替换 正则表达式、字符串处理
状态栏显示光标位置 添加JLabel作为状态栏,监听文本区焦点事件并实时更新字符计数 文档监听器、布局管理器
多标签页 改用JTabbedPane替代单一文本区,支持多个文档同时编辑 复合布局、集合管理

常见问题排查

Q1: 运行时提示ClassNotFoundException怎么办?

原因:类路径(Classpath)未正确设置,导致JVM找不到目标类。
解决方案

  • 命令行运行时需切换到.class文件所在目录;
  • IDE中检查模块依赖配置;
  • 确保类名与文件名完全一致(区分大小写)。

Q2: 保存文件时报Access Denied错误?

原因:程序没有权限向指定路径写入文件。
解决方案

  • 更换保存路径至用户主目录或桌面;
  • 在代码中捕获SecurityException并提供友好提示;
  • Windows系统右键点击程序图标→属性→兼容性→勾选“以管理员身份运行”。

相关问答FAQs

Q: 这个记事本能打开Word文档吗?

A: 不能直接打开.docx格式文件,本程序仅支持纯文本文件(.txt),如需支持富文本,需改用JEditorPane并集成RTF解析库。

java记事本怎么运行

Q: 如何让记事本记住上次打开的文件列表?

A: 可通过以下步骤实现:

  1. 使用Preferences API或配置文件(如properties文件)存储历史记录;
  2. 每次启动时读取历史记录并更新菜单;
  3. 添加“最近打开”子菜单项,绑定双击事件打开对应文件。
    示例代码片段:

    // 保存最近打开的文件路径到数组
    String[] recentFiles = new String[5]; // 最多记录5个文件
    // 读取/写入逻辑需结合文件

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/104081.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年8月14日 07:13
下一篇 2025年8月14日 07:16

相关推荐

  • Java字符串初始化有哪几种方法?如何高效实现?探讨不同初始化方式的优劣。

    Java字符串初始化是Java编程中非常基础和重要的一个环节,字符串在Java中是一个不可变的对象,这意味着一旦初始化后,其内容不能被修改,以下是Java字符串初始化的几种方法,以及每种方法的详细说明,Java字符串初始化方法方法说明示例直接赋值使用双引号直接赋值给字符串变量String str = “Hell……

    2025年10月27日
    1000
  • Java中如何正确读入并显示图片?方法详解与疑问解答

    在Java中,要读入并显示一幅图片,可以通过以下几种方法实现,下面将详细介绍几种常用的方法,并给出相应的代码示例,使用ImageIcon和JLabel这是一种简单直观的方法,适用于大多数情况,步骤:创建一个ImageIcon对象,将ImageIcon对象设置为JLabel的图标,将JLabel添加到JFrame……

    2025年10月9日
    1000
  • Java读取外部字符串的方法有哪些疑问和挑战?

    在Java中读取外部字符串可以通过多种方式实现,以下是一些常见的方法:使用Scanner类Scanner类是Java中用于读取输入的常用类,以下是如何使用Scanner读取外部字符串的步骤:导入Scanner类,创建Scanner对象,通常需要传入System.in作为参数,表示从标准输入读取,使用Scanne……

    2025年9月27日
    900
  • Java制作exe可视化过程详解及方法探讨?

    Java 制作 EXE 可视化可以通过多种方式实现,以下是一些常见的方法和步骤:使用打包工具选择打包工具:JProfiler、Eclipse、IntelliJ IDEA 等都提供了打包功能,设置打包配置:在项目中找到打包配置文件(如 build.gradle 或 pom.xml),设置打包类型为 jar 或 w……

    2025年10月9日
    1100
  • Java编程中如何在代码中正确输入和显示百分号?

    在Java编程语言中,百分号(%)是一个特殊字符,它通常用于格式化输出、字符串连接、模运算等场景,以下是关于Java中如何输入百分号的详细说明:输入百分号的方法在Java中,输入百分号有几种不同的方法,具体取决于你所在的上下文环境,1 使用转义字符在Java字符串中,百分号是一个转义字符,表示字符串的结束,如果……

    2025年10月20日
    900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN