经过几天奋斗,用JTable做了个日期选择的组件。如下图。
本意是通过前后一个月来控制表格中的显示,然后选择一个日期,再根据选择的表格的单元格的行列来确定选择的日期,上面两个ComboBox来控制年月,以及几个操作年月的按钮,但是出现了一个意外情况:如果是选择当前页面的值,选择后返回日期没问题。但是点击上一个月或者其他按钮之后,却发现无法获得其中的值了。
为解决这个情况,我在确认按钮中加了两行代码:
System.out.println(table.getSelectedRow());
System.out.println(table.getSelectedColumn());
发现没点击按钮变化日期之前一切都是正常的,但是点击完之后却出现问题了,当前选择的表格的行列竟然全是-1.为解决这个问题几经转折翻书,查阅JDK文档,网上查资料等等,却发现还是没法找到答案,再回头查看源代码,是在点击操作按钮(上下月、年)之后出现的问题,那么问题肯定就出在这些按钮的响应监听函数中,于是去查看每个操作按钮的监听函数,他们有一个共同点,都执行了方法:initMiddle()(这个方法是用来初始化中间的面板的)。于是再去查看initMiddle()这个函数,里面只有这么几行代码:initTable(); middle.add(new JScrollPane(table))。于是逐行分析,in