1

这个监听器 95% 的时间都在工作:

    messagesJList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
        public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
            messagesJListValueChanged(evt);
        }
    });

但是,它有时会在不方便的时候注册。毫无疑问,我的错误处理是根本问题。话虽如此,是否有一个替代的侦听器可以聚合各种鼠标和键盘侦听器,但只有那些事件?

4

2 回答 2

3

这个监听器 95% 的时间都在工作:

在所有情况下都对我有用,肯定需要测试是否selectedItem, Index or Row大于-1 (no selection)

    jList.addListSelectionListener(new ListSelectionListener() {

        @Override
        public void valueChanged(ListSelectionEvent e) {
            if (!e.getValueIsAdjusting()) {
                int selectedRow = jList.getSelectedIndex();
                if (selectedRow> -1) {
                    System.out.println("selection");
                }                    
            }
        }
    });
于 2012-07-25T21:10:48.553 回答
0

我只是结合:

private void messagesJListKeyReleased(java.awt.event.KeyEvent evt) {
    userSelectedRow();
}

private void messagesJListMouseReleased(java.awt.event.MouseEvent evt) {
    userSelectedRow();
}

这样只有当用户实际使用鼠标或键盘单击时,才会调用 userSelectedRow() 方法。

于 2012-07-25T21:15:47.873 回答