带键盘的 Java ListSelectionListener 接口(interface)

标签 java swing jtable listselectionlistener

我已经实现了 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/

相关文章:

java - 我应该使用什么命令来解决这个问题?

java - Guava 是否有过载,如果它太大就会中止流?

Java新线程打开新窗口?

Java Swing : Custom Cell Editor does not return most recent value

java - 如何避免/删除连续写入最后一个逗号?

java - QTP 没有记录 Java 应用程序

java - 如何使用 Java 生成 1 到 6 之间的 6 个随机数?

java - 控制 Mac 上 Java/Swing 中的按键使用

java - 如何在使用 Thread.sleep 时更新 UI

java - 需要在JTable中动态添加JCheckBox