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

は、NetBeans

選択する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); 
    } 
} 
関連する問題