Java Swing实现基础记事本界面布局详解

温以宁
温以宁
发布时间:2026-10-16 | 4人浏览过
原创

本示例演示如何在 Java Swing 框架下搭建一个标准的记事本程序界面。主要包含顶部菜单栏(文件/编辑等)、中间的工具栏按钮组以及下方的滚动文本编辑区域,并展示了 BorderLayout 与 FlowLayout 的组合使用。

实现结果与目标

最终实现的窗口包含三个主要垂直区域:顶部的 JMenuBar 包含多级菜单;中部的工具栏包含带图标的功能按钮;底部为支持滚动的 JTextArea。窗口尺寸设定为 500x320 像素,居中显示。

准备条件

  • 开发环境:已安装 JDK 及 IDE(如 IntelliJ IDEA 或 Eclipse)。
  • 资源文件:需要准备 7 个 .jpg 图片文件,分别对应新建、复制、剪切、记事、打开、粘贴和保存操作。在代码中假定这些图片位于 /com/res/ 路径下,实际使用时请替换为真实路径。

操作步骤与代码结构

第一步:创建主窗口类

创建一个继承自 JFrame 的类作为主程序入口,确保界面元素在非 EDT (Event Dispatch Thread) 线程外初始化时遵循规范,此处直接构造即可满足简单示例需求。

第二步:构建菜单栏(JMenuBar & JMenu)

首先实例化 JMenuBar,然后创建五个顶层菜单:文件(F), 编辑(E), 格式(O), 查看(V), 帮助(H)。将对应的 JMenuItem 添加到“文件”菜单中,其余菜单暂时留空以简化结构。

// 第一部分:菜单栏设置
JMenuBar jme = new JMenuBar();

JMenu jmenu1 = new JMenu("文件(F)");
JMenu jmenu2 = new JMenu("编辑(E)");
JMenu jmenu3 = new JMenu("格式(O)");
JMenu jmenu4 = new JMenu("查看(V)");
JMenu jmenu5 = new JMenu("帮助(H)");

// 添加菜单项
JMenuItem ji1 = new JMenuItem("新建");
JMenuItem ji2 = new JMenuItem("打开");
JMenuItem ji3 = new JMenuItem("保存(S)  ctrl+s");
JMenuItem ji4 = new JMenuItem("另存为");
JMenuItem ji5 = new JMenuItem("页面设置");
JMenuItem ji6 = new JMenuItem("打印");
JMenuItem ji7 = new JMenuItem("退出");

jmenu1.add(ji1);
jmenu1.add(ji2);
jmenu1.add(ji3);
jmenu1.add(ji4);
jmenu1.add(ji5);
jmenu1.add(ji6);
jmenu1.add(ji7);

jme.add(jmenu1);
jme.add(jmenu2);
jme.add(jmenu3);
jme.add(jmenu4);
jme.add(jmenu5);

第三步:配置工具栏按钮与图标

创建 7 个无文本的 JButton,并通过 ImageIcon 加载本地资源图片赋予每个按钮视觉标识。这里使用了类加载器获取资源路径,确保在不同部署环境下路径正确。

// 第二部分:工具栏按钮与图标
JButton jb1 = new JButton();
// ... 省略其他 jb2-jb7 声明 ...

Icon icon1 = new ImageIcon(this.getClass().getResource("/com/res/NEW.jpg"));
// ... 省略其他 icon 加载 ...

jb1.setIcon(icon1);
// jb2.setIcon(icon2); // 依次类推
// jb3.setIcon(icon3); // 依次类推

第四步:组装面板与布局管理

使用 JPanel 作为容器进行分块布局。采用 FlowLayout(0) 使内部组件水平排列且居中对齐。利用 BorderLayout 将菜单区置于北(NORTH)、工具栏区置于中心(CENTER)、文本区置于南(SOUTH)。

// 第三部分:面板组合
JTextArea jte = new JTextArea(10, 42);
JScrollPane jsc = new JScrollPane(jte);

JPanel jp1 = new JPanel(); // 菜单栏容器
JPanel jp2 = new JPanel(); // 工具栏容器
JPanel jp3 = new JPanel(); // 文本区容器

jp1.setLayout(new FlowLayout(0));
jp1.add(jme);

jp2.add(jb1);
// jp2.add(jb2); // 依次添加其他按钮
// jp2.add(jb3); // 依次添加其他按钮

jp3.add(jsc);

jp2.setLayout(new FlowLayout(0));
jp3.setLayout(new FlowLayout(0));

// 核心:BorderLayout 布局分配
this.add(jp1, BorderLayout.NORTH);
this.add(jp2, BorderLayout.CENTER);
this.add(jp3, BorderLayout.SOUTH);

第五步:窗口属性设置与运行

最后设置窗口的可见性、大小、位置以及关闭行为,并在 main 方法中启动实例。

public static void main(String[] args) {
    new Demo10();
}

// 在构造函数末尾添加...
this.setSize(500, 320);
this.setLocation(450, 120);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

完成判断

编译运行后,屏幕应显示一个标题为“记事本”的窗口。顶部横排显示“文件”、“编辑”等菜单选项,鼠标悬停在“文件”上应展开下拉列表;中部显示一排带有图标的按钮;下部为一个灰色的文本输入框。若运行时提示找不到图片资源,请检查 getImage() 中的文件路径是否与实际存放位置一致。

简要总结

该示例通过分层组装 JPanel 的方式,清晰地分离了菜单栏、工具栏和内容区,是学习 Swing 布局管理器(尤其是 Border + Flow 组合)的典型入门案例。以上就是Java Swing实现记事本页面的详细内容,更多关于Java图形界面开发的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表