我已经实现了 ListSelectionListener,如下所示,因此在选择第一个表中的特定行后,第二个表会相应更新。
class SelectionListener implements ListSelectionListener {
public SelectionListener(){}
@Override
public void valueChanged(ListSelectionEvent e)
{
if (e.getSource() == myTrumpsAndMessages.jTable1.getSelectionModel()
&& myTrumpsAndMessages.jTable1.getRowSelectionAllowed()
&& e.getValueIsAdjusting())
{
int selected = myTrumpsAndMessages.jTable1.getSelectedRow();
clearjTable(jTable4);
showSubscribers(selected);
}
}
}
有没有办法不仅在鼠标选择时,而且在键盘做出选择时调用监听器?
最佳答案
不寻常体验的原因 - 没有通过键盘进行选择的通知 - 是键盘与鼠标触发的选择事件的 valueIsAdjusting 设置的细微不同:
- 键盘触发的选择(即使有修饰符)只触发一次(调整== false)
- 鼠标触发的选择总是触发两次(第一次是 true,第二次是 false)
这一事实与不寻常的逻辑相结合(@Robin 发现了这一点,给他 +1 :-)
if (e.getSource() == myTrumpsAndMessages.jTable1.getSelectionModel()
&& myTrumpsAndMessages.jTable1.getRowSelectionAllowed()
// typo/misunderstanding or feature? doing stuff only when adjusting
&& e.getValueIsAdjusting())
(仅在选择正在调整时使用react)导致看不到键盘触发的更改。
关于带键盘的 Java ListSelectionListener 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186054/