基于 JavaSwing 的招生信息管理系统的实现
Posted 毕小宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 JavaSwing 的招生信息管理系统的实现相关的知识,希望对你有一定的参考价值。
背景
昨天实现了一个基于 Java Swing 的招生信息管理系统,这个比以前做的复杂一点,它包含两个管理功能,通过菜单切换。每个功能都有增、删、改、查,数据使用文件保存到磁盘中,可在此基础上添加或修改为任意新信息的管理功能。
本文来介绍一下这个简单系统的结构和实现要点,这是运行效果图。
功能介绍
作为 Java Swing 学习的练习题,它包含的功能有用户注册、登录;学校招生项目信息管理菜单:增、删、改、查;用户预约报班信息管理菜单:增、删、改、查。
第一步,绘制功能结构图:
第二,系统登录后的主页面,包含两个一级菜单。
第三,主菜单包括“系统功能” 和“关于”。“系统功能” 对应两个子管理功能,点击菜单时跳到对应 List 的 Frame 窗体,列表窗体都含包添加、删除、修改按钮。“关于” 菜单,点击“退出”可结束程序。
培训项目信息录入界面:
类图结构
Swing 实现简单的信息管理功能,包括增、删、改、查、列表、数据信息操作类,PrjectListFrame 和 ClassOrderListFrame 所关联的功能类是一套类似。
所以对整个系统抽取的功能类图结构如下:
JComboBox 使用坑点
使用 Swing 绘制页面的时候,发现 Box 是非常好用的容器组件。信息输入框一般是 label 和文本域,创建一个水平 Box 加入两个组件即可:
JLabel titleLabel=new JLabel("项目名称:");
Box titleRow= Box.createHorizontalBox();
titleRow.add(titleLabel);
titleRow.add(titleJText);
本文的应用实现过程中,用到了 JComboBox ,因为课程预约的项目名称必须是系统录入的项目名称。需要先查询所有的项目,然后填充到 JComboBox 中,让用户选择,不用文本域,以避免无效数据的产生。
此时,如果还是直接添加到 Box 中的话,布局就会很难看:
JLabel isChoosenLabel=new JLabel("是否招满:");
jcomb.addItem("否");
jcomb.addItem("是");
jcomb.setPreferredSize(new Dimension(333, 20));
jp.add(isChoosenLabel);
jp.add(jcomb);
Box isChoosenBox= Box.createHorizontalBox();
isChoosenBox.add(isChoosenLabel);
isChoosenBox.add(jcomb);
直接添加下拉框到 Box 的运行效果图:
这样将下拉框放在 Box 中,下拉框的大小是无法控制。
解决方案:查找了一些资料,最终找到的解决方案是,将 JComboBox 放在 JPanel 中,同时设置它的最佳 Size 。
这样才能让这一项跟前面对齐,修正添加下拉框的代码:
JPanel jp=new JPanel();
JLabel isChoosenLabel=new JLabel("是否招满:");
jcomb.addItem("否");
jcomb.addItem("是");
jcomb.setPreferredSize(new Dimension(333, 20));
jp.add(isChoosenLabel);
jp.add(jcomb);
Box isChoosenBox= Box.createHorizontalBox();
isChoosenBox.add(jp);
jcomb.setPreferredSize(new Dimension(333, 20))
这是关键代码,它可以调整距离 Label 的位置,再运行界面就齐整了:
进一步优化: 测试发现 JComboBox 所在父组件 JPanel 如果不设置大小,那么它与底部按钮的距离会很高,导致界面不匀称。
而且 JPanel 的 setSize
根本不生效 ,只有 jp.setMaximumSize(new Dimension(700, 30));
才能控制面板的大小。
编程启示录
对大多数读者来说,本文只有一个有价值的信息,就是 JComboBox 怎么和 Box 一起创建一行大小适中的表单界面,可点击查看运行效果。
核心代码就是这两行:
jp.setMaximumSize(new Dimension(700, 30)); // 控制面板大小
jcomb.setPreferredSize(new Dimension(333, 20)); // 控制下拉框大小
以上是关于基于 JavaSwing 的招生信息管理系统的实现的主要内容,如果未能解决你的问题,请参考以下文章
基于JavaSwing+Mysql的超市商品管理系统设计和实现
基于JavaSwing+mysql的学生社团管理系统设计和实现