我使用的是JTable中。 我需要得到一个通知,每当小区选择的变化。 我试图用ListSelectionListener但我只得到通知,当行选择变化。 如果我选择在同一行上一个新的专栏中,我没有得到通知。 我需要在所选单元格,而不是当细胞发生变化就知道了。 有没有我可以用来做一个倾听者?
Answer 1:
要做到这一点,最简单的方法是调用setCellSelectionEnabled(true)
,并通过引用你的表给听者。 当调用监听器,调用getSelectedRow()
和getSelectedColumn()
的原始表。
另一种方法是设置在桌子上,在列选择收听一个行选择听者ColumnModel
,然后找出它们的交点。
Answer 2:
接收通知栏上选择更改的一种方式-如已经@parsifal回答(在评论-就是抓住的TableColumnModel的selectionModel的内部并注册一个监听器:
table.getColumnModel().getSelectionModel().addListSelectionListener(selectionListener);
另一种方式是注册与columnModel一个TableColumnModelListener:
table.getColumnModel().addColumnModelListener(columnModelListener);
首先是“短”在代码方面:只有一个方法来实现对数 - 除了columnSelectionChanged最空的。
二是针对动态变化更稳健:与第一有没有可能以防范columnModel的财产selectionModel的...的变化,因为它不是一个属性。 或者换句话说:在(concededly罕见)情况下的应用程序代码换出selectionModel的听众在听的空白。 安装columnModelListener是对这种变化都难,因为columnModel传递从selectionModel设置的事件无论这将是。
文章来源: JTable cell listener?