除了使用JTable
之外,即使在已选择MouseListener
的单元格上,是否有任何方法可以监听小区选择?
我有一个带行和列监听器的JTable。选择已经选择的单元格时,两个侦听器都不会触发:
JTable table() {
JTable table = new JTable(10, 10);
table.getSelectionModel().addListSelectionListener(rowListener);
table.getColumnModel().getSelectionModel().addListSelectionListener(colListener);
return table;
}
ListSelectionListener rowListener = event -> {
if(event.getValueIsAdjusting())
return;
System.out.println("Row: "+((ListSelectionModel) event.getSource()).getMinSelectionIndex());
};
ListSelectionListener colListener = event -> {
if(event.getValueIsAdjusting())
return;
System.out.println("Col: "+((ListSelectionModel) event.getSource()).getMinSelectionIndex());
};
我的目标是打开/关闭电池。它的工作原理是,除了在选择已经选择的单元格时听众不会触发的事实,这通过上面的SSCCE表示。
似乎没有任何听众可以附加到JTable
(或它的模型/选择模型)来处理这个,除非我使用MouseListener
并手动管理cooridnates 。使用TableModelListener
,我可以监听更改,但此事件的目标是前一个单元格(已取消选择),单击未选择单元格的区域将导致该侦听器触发。
答案 0 :(得分:2)
我的目标是打开/关闭电池。
将布尔数据存储在TableModel中。然后,无论何时单击单元格,该值都将在true / false之间切换。
布尔值的默认渲染器是一个复选框。如果您不想看到复选框,则可以随时使用自定义渲染器。