2014-01-29 67 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