Java Swing:创建简易记事本

本文记录了实训课的作业内容,使用 Java Swing 从零创建一个简易记事本。涉及窗口创建、菜单栏组件、快捷键设置、滚动文本域等核心知识点。

一、创建窗口

万事开头难,先来看最基础的窗口创建。使用 JFrame 即可快速创建一个带标题栏、最大化最小化按钮的窗口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import javax.swing.*;
import java.awt.*;

public class MyNotePad1 extends JFrame {

// 定义构造方法:初始化窗口
public MyNotePad1() {
super("简单文本编辑器");// 利用父类的构造方法设置窗口的标题
this.setBounds(100, 100, 800, 600); // 设置窗口的位置和大小
this.setResizable(false);// 设置窗口的大小不可改变
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口的缺省关闭方式
}

public static void main(String[] args) {
MyNotePad1 notepad = new MyNotePad1();
notepad.setVisible(true);
}
}

核心知识点:

  • super("简单文本编辑器") 调用父类构造方法设置窗口标题
  • setBounds(x, y, width, height) 同时设置窗口位置和大小
  • setResizable(false) 禁止调整窗口大小
  • setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 设置关闭按钮的行为

二、添加组件

一个完整的文本编辑器需要菜单栏、菜单和菜单项。这里使用 JMenuBarJMenuJMenuItem 来构建菜单系统。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 定义文本编辑器中的菜单栏、菜单和菜单项等变量
private JMenuBar jmenuBar;
private JMenu file, edit, style, help;
private JMenuItem newFile, openFile, saveFile, saveAsFile, quit;
private JMenuItem undo, redo, cut, copy, paste, delete, find, replace, selectAll;
private JCheckBoxMenuItem linewrap;// 自动换行
private JMenuItem lowToUper, uperToLow, word;
private JMenuItem about;

// 实例化菜单栏
jmenuBar = new JMenuBar();
// 实例化下拉菜单
file = new JMenu("文件(F)");
edit = new JMenu("编辑(E)");
style = new JMenu("格式(S)");
help = new JMenu("帮助(H)");
// ... 实例化菜单项略
// 将菜单项添加到相应菜单,将菜单添加到菜单栏
file.add(newFile);
file.add(openFile);
file.add(saveFile);
file.add(saveAsFile);
file.addSeparator();// 添加菜单项之间的分割线
file.add(quit);
// ...
jmenuBar.add(file);
jmenuBar.add(edit);
jmenuBar.add(style);
jmenuBar.add(help);
// 将菜单栏设置到窗口中显示
this.setJMenuBar(jmenuBar);

结构图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
JMenuBar (菜单栏)
├── JMenu (文件)
│ ├── JMenuItem (新建)
│ ├── JMenuItem (打开)
│ ├── JMenuItem (保存)
│ ├── JMenuItem (另存为)
│ ├── Separator
│ └── JMenuItem (退出)
├── JMenu (编辑)
│ ├── JMenuItem (撤销)
│ ├── JMenuItem (恢复)
│ └── ...
├── JMenu (格式)
│ ├── JCheckBoxMenuItem (自动换行)
│ └── ...
└── JMenu (帮助)
└── JMenuItem (关于)

三、设置快捷键

快捷键分为两种:热键 (Mnemonic) 用于通过 Alt + 字母 激活菜单,加速键 (Accelerator) 用于直接触发菜单项操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 菜单热键设置(Alt + 字母)
file.setMnemonic('F');
edit.setMnemonic('E');
style.setMnemonic('S');
help.setMnemonic('H');

// 为菜单项设置快捷键(Ctrl + 字母)
newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
saveFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));
redo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_MASK));
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));
replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK));
selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));

注意:旧代码中使用 ActionEvent.CTRL_MASK,新代码建议使用 InputEvent.CTRL_DOWN_MASK

四、创建带滚动条的文本域

最后一步,添加文本编辑区域。使用 JTextArea 存放文本,配合 JScrollPane 实现滚动功能。

1
2
3
4
5
6
7
8
9
// 文本域和滚动面板
private JTextArea wen;
private JScrollPane js;

// 创建文本域对象和滚动面板对象
wen = new JTextArea(20, 50);
wen.setFont(new Font("楷体", Font.PLAIN, 18));
js = new JScrollPane(wen);
this.add(js);

核心知识点:

  • JTextArea(rows, columns) 指定文本域的行列数
  • setFont() 设置字体(字体名、样式、字号)
  • JScrollPane(textArea) 将文本域包装进滚动面板
  • this.add(js) 将滚动面板添加到窗口

五、总结

本次实训完成了简易记事本界面的搭建,涉及以下 Java Swing 核心组件:

组件 用途
JFrame 窗口容器
JMenuBar 菜单栏
JMenu 下拉菜单
JMenuItem / JCheckBoxMenuItem 菜单项
JTextArea 多行文本编辑区
JScrollPane 滚动面板

下一步可以继续实现菜单项的功能逻辑,如新建、打开、保存文件,以及编辑功能的实际运作。期待后续完善!


Java Swing:创建简易记事本
https://luoshuang.org/2026/04/07/Java-Swing实战-打造简易记事本/
作者
LuoShuang
发布于
2026年4月7日
许可协议