这个小程序的idea,是我在帮自己同学改Java课程设计的时候产生的。
首先是Java对数据库的简单操作,增删改查,然后拿到操作结果,最后把结果体现到Java的GUI组件上.。
当我在不断地做着这些烦琐重复的操作时,就在想可不可以提取出一个通用界面,在拿到对数据库操作的结果后,直接对界面进行填充。
我通过一系列的思考后,就开始行动了,不断地修改,调试后,成功了。内心得到了一点小小的成就感。
先看效果界面
操作主界面,右下角两个按钮分别是刷新table的数据和插入数据
单击主界面的id列的任一数字,进行详情界面,在该界面可修改(modify按钮)可删除(delete按钮)当前记录
对某项数据的模糊搜索(我这里是对name),你随意
添加数据界面,这个界面没有什么好讲的。
接下来才是重点
JTable上的列名已经变化了
这里是对recruit_position进行模糊搜索
详情界面的字段名标签变化了,文本框的数量以及文本框的Text也随之相应地变化了
添加数据界面亦然。
同一个界面,灵活对应着不同的数据库表的字段。这是怎么做的呢?
没错,就是用到我前两篇博客中所用到的反射技术。
待我娓娓道来
首先我定义了一个接口ShareService.java,并使用了泛型(传JavaBean)。ShareService在整个数据库中操作中起着承上启下的作用,上至操作界面,下到数据库表。
结构如下
在主界面DemonstrateFrame.java中用到了ShareService这个接口,并在DemonstrateFrame.java上使用了泛型(传JavaBean)。
具体使用看下图
其他界面的也是如出一辙
添加数据界面
详情页面
随便来一个类AddressBookService.java,实现ShareService.java这个接口
随便来个javaBean,AddressBook.java
运行主界面(主界面再调用其他界面)的操作如下
首先拿到一个AddressBookService(实现了ShareService接口),我这里用到了Spring框架,你随意。
ApplicationContext applicationContext = ApplicationContextUtility.getApplicationContext();
ShareService<AddressBook> addressBookShareService = applicationContext.getBean(AddressBookService.class);
之后创建DemonstrateFrame对象,对象中传入泛型参数AddressBook,构造方法中传入AddressBook.class
DemonstrateFrame<AddressBook> demonstrateFrame = new DemonstrateFrame<>(AddressBook.class);
其次给DemonstrateFrame设置一个ShareService接口实现类的实例化对象AddressBookService
demonstrateFrame.setShareService(addressBookShareService);
最后初始化界面
demonstrateFrame.initializeFrame();
主界面调用其他界面也是类似的三步走,
创建XXFrame对象,一定要加入泛型
给XXFrame设置实现ShareService接口的类的实例化对象
XXFrame界面初始化
概要的东西都讲完了
实现通用功能的点有
1.类上使用泛型,传入指定的JavaBean,以便于后面的类型转换
2.构造函数类传JavaBean.class或者传入的泛型类JavaBean的实例化对象(这个依据需求而定)
3.MyUtility.java中使用到的反射,
反射JavaBean,
为JavaBean中各个属性赋值,
取出JavaBean各个属性和属性值,
将装进了指定界面的各个文本框Text的map,变成JavaBean
写到这里,应该算是结束了。
有些初学者看着很懵,有些大牛看着有点意思。
在些急于交Java课程设计(基于数据库操作)的同学,看到这里,你很幸运。
直接在Csdn或者百度上搜索"人性化的Java通用界面—基于数据库表CRUD操作的GUI模版",应该能找到我上传的压缩包“zorro.rar”,或者Q我848360301,无条件发给你