java中表格选择行列返回-1的问题
来源:互联网 发布:人工智能 重点研发 编辑:程序博客网 时间:2024/05/23 19:37
经过几天奋斗,用JTable做了个日期选择的组件。如下图。
本意是通过前后一个月来控制表格中的显示,然后选择一个日期,再根据选择的表格的单元格的行列来确定选择的日期,上面两个ComboBox来控制年月,以及几个操作年月的按钮,但是出现了一个意外情况:如果是选择当前页面的值,选择后返回日期没问题。但是点击上一个月或者其他按钮之后,却发现无法获得其中的值了。
为解决这个情况,我在确认按钮中加了两行代码:
System.out.println(table.getSelectedRow());
System.out.println(table.getSelectedColumn());
发现没点击按钮变化日期之前一切都是正常的,但是点击完之后却出现问题了,当前选择的表格的行列竟然全是-1.为解决这个问题几经转折翻书,查阅JDK文档,网上查资料等等,却发现还是没法找到答案,再回头查看源代码,是在点击操作按钮(上下月、年)之后出现的问题,那么问题肯定就出在这些按钮的响应监听函数中,于是去查看每个操作按钮的监听函数,他们有一个共同点,都执行了方法:initMiddle()(这个方法是用来初始化中间的面板的)。于是再去查看initMiddle()这个函数,里面只有这么几行代码:initTable(); middle.add(new JScrollPane(table))。于是逐行分析,initTable只是初始化table的值,没发现什么问题,然后继续找资料,查看是不是JTable中需要对某些函数进行重写,于是去查找有关的选择行列的方法,发现即使是重写了之后还是存在问题。于是再查看下一行代码:
middle.add(new JScrollPane(table));//②问题果然出在这里,这里每点击一次操作按钮都会执行一次②代码,这行代码在执行第一次的时候没问题,因为他新建一个JScrollPane的实例,但是执行第二次的时候又创建一个实例并添加到middle面板中,现在就产生的一个问题了。middle中添加了两个JScrollPane实例,而这两个实例又都是以table为他的view,那么就产生一个矛盾了:我在选择单元格的时候是选择的哪个JScrollPane中的table,而在监听的时候又是监听哪个JScrollPane中的table。
这个问题暂时没懂。。。但是解决方案倒是有了
initTable();js.setViewportView(table);middle.add(js);不重新new JScrollPane实例,而是将js的view重新设置。问题解决。。
0 0
- java中表格选择行列返回-1的问题
- 同时选择表格行列的实现
- 获取winformGridView中选择的行列
- datagridview的行列选择
- 在Word中实现表格的行列互换
- js通过行列获取表格中input的值
- html中表格table的行列合并问题解决
- Excel2010选择行列的快捷键
- 控制表格的行列来显示数据
- 控制表格的行列来显示数据
- 控制表格的行列来显示数据
- 表格的行列固定 css+div
- SQL对表格的行列转换
- 使用srcElement判断表格的行列
- 获取鼠标hover表格的行列位置
- ListView+GridView实现行列不确定的表格
- 动态输出一个任意行列的表格
- table表格行列的合并处理
- linux-makefile
- UIScrollView+PageControl 翻页提示
- 2013总结
- svn命令行faq
- 不用gridview将查询结果导出到excel
- java中表格选择行列返回-1的问题
- 在两种情况下设备与驱动会发生匹配
- ntsysv的操作方法
- Nutch笔记
- Android编译报Errors running builder 'Android Pre Compiler' on project 'XXX' java.lang.NullPointerExcept
- 学习HTML5开发RPG游戏第一步>准备
- hdu 1018
- C#调用ORACLE存储过程
- 在CentOS上安装rabbitmq