2010-12-03 105 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

注意,如果列表中有足夠的空間,並且用戶雙擊空白空間,這將檢測到列表中最後一個對象的雙擊。如果您只想檢測包含項目的列表區域中的點擊次數,可以這樣檢查: Rectangle r = list.getCellBounds(0,list.getLastVisibleIndex());如果(r!= null && r.contains(evt.getPoint())){int} index = list.locationToIndex(evt.getPoint()); } – 2012-03-01 23:14:26

10

我知道你有一個簡單的解決方案,但你可能要爲更廣泛的解決方案,讓您使用鼠標和關鍵局檢查出List Action。正確的GUI設計應該允許使用這兩種方法。

9

(基於穆罕默德Saligh,接受響應)

如果您使用的是NetBeans

選擇的JList>活動窗口>的mouseClicked

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); 
    } 
}