2010-12-03 2 views

답변

115
String[] items = {"A", "B", "C", "D"}; 
JList list = new JList(items); 

list.addMouseListener(new MouseAdapter() { 
    public void mouseClicked(MouseEvent evt) { 
     JList list = (JList)evt.getSource(); 
     if (evt.getClickCount() == 2) { 

      // Double-click detected 
      int index = list.locationToIndex(evt.getPoint()); 
     } else if (evt.getClickCount() == 3) { 

      // Triple-click detected 
      int index = list.locationToIndex(evt.getPoint()); 
     } 
    } 
}); 
+20

주의 mouseClicked를 사용하는 경우 그 목록이 빈 공간이있는 경우, 사용자가 빈 공간을 두 번 클릭하면 목록의 마지막 객체에 대한 더블 클릭이 감지됩니다. 항목이 포함 된 목록 영역의 클릭 만 감지하려면 다음과 같이 확인하십시오. 사각형 r = list.getCellBounds (0, list.getLastVisibleIndex()); if (r! = null && r.contains (evt.getPoint())) { int index = list.locationToIndex (evt.getPoint()); } –

+11

locationToIndex 대신 현재 선택된 항목에 대해 JList에 질문하는 것으로 충분하지 않습니까? 즉, list.getSelectedIndex()를 호출하면됩니다. –

+0

@CookieMonster, 목록이 다중 선택 인 경우 작동하지 않습니다. –

10

난 당신이 간단한 해결책을 알고 있지만, 당신은 키 보드뿐만 아니라 마우스를 사용할 수 있도록하는 일반적인 솔루션을 List Action을 체크 아웃 할 수 있습니다. 적절한 GUI 디자인을 사용하면 두 가지 방법 중 하나를 사용할 수 있습니다. (모하메드 Saligh, 허용 응답 기준)

9

당신이 넷빈즈

선택의 JList> 이벤트 창>

private void jListNicknamesMouseClicked(java.awt.event.MouseEvent evt) {            
    JList list = (JList)evt.getSource(); 
    if (evt.getClickCount() == 2) { 
     int index = list.locationToIndex(evt.getPoint()); 
     System.out.println("index: "+index); 
    } 
}