2010-11-12 41 views
4

我的情況如下:無論何時在列表中進行選擇,我都有一個JList觸發搜索(使用ListSelectionListener)。我正嘗試使用list.clearSelection()來重置列表中的選擇。這個問題是使用clearSelection()觸發偵聽器,它調用搜索:不好。Java Swing:在沒有觸發監聽器的情況下清除JList

有沒有一種方法可以清除列表上的選擇而不需要監聽器被觸發?這可能是我沒有正確使用監聽器的提示嗎?一般來說,你可以在Swing UI中改變某些東西而不觸發與該元素相關的事件嗎?

謝謝。

回答

4

閱讀有關How to Write a List Selection Listener的Swing教程的部分,以獲得工作演示。

通常會生成兩個事件,一個用於取消選擇,一個用於選擇。您應該只在選擇某些內容時進行搜索。你也應該能夠檢查選擇的索引,它應該是-1以外的東西,我相信。

+0

謝謝,這工作。我只是檢查了selectedIndex是否<0。 – 2010-11-12 16:55:40

0

嘗試使用clear()方法來清除的jList時以下模式:

ListObjectName.addListSelectionListener(new ListSelectionListener() { 

    public void valueChanged(ListSelectionEvent e) { 
    if (!e.getValueIsAdjusting()){ 
     if(ListObjectName.getSelectedIndex()>-1){ 
     //Your Code 
     } 
    } 
    } 
}); 
相關問題