Java Swing实现基础记事本界面布局详解
本示例演示如何在 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图形界面开发的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









