2014-01-29 97 views
0

我有一個JList,它在每次雙擊列表中的值時運行代碼。按下按鈕時會填充該值。我的問題是每次點擊按鈕,然後雙擊JList值,它會重複該代碼,但是多次按下該按鈕。雙擊按鈕按下的次數

例如,第一次看起來一切都很好,但如果再次按下按鈕來更改JList值,它將執行兩次雙擊代碼。如果我第三次按它,它將執行三次代碼,依此類推。如果這是一件容易的事,我對此非常抱歉。感謝您的任何信息。下面的代碼讓我知道如果更多是必要的。

public DefaultListModel results(StringBuilder message) 
{ 

    DefaultListModel model = new DefaultListModel(); 
    model.addElement(message); 
    showOption.setModel(model); 

    MouseListener mouseListener = new MouseAdapter() { 
     public void mouseClicked(MouseEvent e) { 

      if (e.getClickCount() == 2) 
      { 
       int index = showOption.locationToIndex(e.getPoint()); 
       Object o = showOption.getModel().getElementAt(index); 
       System.out.println("Double-clicked on: " + o.toString()); 
      } 
     } 
    }; 

    showOption.addMouseListener(mouseListener); 
    return model; 
} 
+0

爲什麼每次都必須創建一個新的'DefaultListModel'和'MouseListener'?你有沒有注意到你的代碼甚至不依賴於你繼續創建的任何東西? –

回答

4

MouseListener每次results叫你加入......

這...

DefaultListModel model = new DefaultListModel(); 
model.addElement(message); 
showOption.setModel(model); 

可見showOptionJList現有實例(這是很好) ,但你呢...

MouseListener mouseListener = new MouseAdapter() { 
    //... 
}; 

showOption.addMouseListener(mouseListener); 

其中添加了另一個MouseListenerJList,所以每次調用此方法時,都會將另一個MouseListener添加到JList

當您第一次創建時,將MouseListener添加到JList

+0

再次感謝!這解決了它,我感謝你的耐心。 – robe0709