目录
项目场景:
问题描述:
解决方案:
2、如何处理JButton点击后,JLabel要正确变化
项目场景:
有学妹找我代写项目,实验内容如下图2个页面:
数据处理不是很大,前端页面绘制对我来说是个麻烦(我对Java Swing学习过一次大型项目--五子棋的项目而已)
问题描述:
主要是第二副图遇到了麻烦,我困惑了很久
1.、如何使表格实时更新
2、如何使信息加载显示区也随着变化
3、以上需要用什么组件 (选择表格用JTable,显示区用JLabel)
4、如何处理JTable的问题:
JTable显示数据,当我点击更新后,显示的数据是修改后的数据,可再点击被修改的列时,又成了未修改前的数据
真实是这样的,但点击下面后,
5、如何处理JButton和JLabel的问题:
点击JButton,修改JLabel的值为“正在搜索”,等表格数据更新之后,再修改JLabel的值为相应的反应,但没有等到“正在搜索”的效果,就直接最后反应了
解决方案:
1、如何实现表格实时更新及覆盖问题
(1) 定义静态变量 表格、滚动条和表格面板
(2)表格加入滚动条,再加入面板
(3)在修改表格后,更新表格面板、滚动条和表格(表格插回tabelPanel的jScrollPanel)
注意:问题 4:如何处理JTable的问题
出现的原因是我们没有删除,再重新添加,需要如图步骤:
删除滚动条(其实连table都一起删了),然后2个一起new,再插回去tablePanel,其实这是个三层结果,把底下2层处理了,顶层显示就不会出现下面这个情况:
JTable显示数据,当我点击更新后,显示的数据是修改后的数据,可再点击被修改的列时,又成了未修改前的数据
当然,我们也可以不删除(我之前不知道的时候的做法)--直接不给编辑,真就给看看而已
table.setEnabled(false); // 学习点1:这里处理了选中空白行,显示上一次多余的结果
之前还查到一个方法:继承表格类,修改为不可编辑,但是这个方法其实不太好,点击还是会复现
2、如何处理JButton点击后,JLabel要正确变化
首先,肯定要监听器
其次,需要在查询那里设置“正在飞速加载中”
最后,也是最重点的, 对操作反应的延迟
原来,我想直接在应有的操作后直接加入
但每次都是只看到最后的info,前面的被覆盖了。
我查了相关博客文档和看了setText源码:
文档讲JLabel在JButton点击后,需要等JButton运行结束后,才会处理,而我程序这里,在JButton调用后,很快就执行了setText(info),时间太短了,我们看不出区别
网址:https://www.iteye.com/blog/kesandfish-296742
setText源码关键部分:
我直接setText后都没用,那在程序再加下面的的重画也是没用
既然因为太快,那我加个延时总可以了吧。事实上,我加了一分钟都没作用。(仅仅我电脑实验结果)
我后来看到csdn的一个问答:
但一开始不理解try里面是放我程序哪部分
后来想通了,就是返处理那个部分,可以开启个新线程,这个新启动一定比较慢了,涉及操作系统调度,它应该可以等到我JButton 那个正在运行的线程结束(人为加点延时就行了)
代码如下: