2014-01-29 1 views
0

목록의 값을 두 번 클릭 할 때마다 코드를 실행하는 JList가 있습니다. 이 값은 버튼을 누를 때마다 채워집니다. 내 문제는 단추를 클릭 한 다음 단추를 여러 번 눌러 코드를 반복합니다 JList 값을 두 번 때마다입니다.두 번 클릭하여 반복 횟수를 얼마나 많이 누르십니까?

예를 들어, 처음에는 모든 것이 훌륭해 보이지만 JList 값을 변경하기 위해 버튼을 다시 누르면 두 번 클릭하기위한 코드가 두 번 실행됩니다. 세 번째로 누르면 3 번 코드가 실행됩니다. 이것이 쉬운 일이라면 나는 사과한다. 모든 정보 주셔서 감사합니다. 더 많은 정보가 필요한 경우 코드가 아래에 나와 있습니다. 당신은 호출되는 새로운 MouseListener마다 results를 추가

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

...

이 ...

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

showOption가 (좋은) JList의 기존 인스턴스가 있음을 나타냅니다 , 그렇다면 당신은 ...

이것은 JList에 또 다른 MouseListener을 추가하므로이 메소드가 호출 될 때마다 JList에 또 다른 MouseListener이 추가됩니다.

JList을 처음 만들 때 MouseListener 하나를 추가하십시오.

+0

다시 한번 감사드립니다! 그게 해결되어서, 네가 인내심을 가져 주셔서 고맙습니다. – robe0709