web-dev-qa-db-ja.com

JList要素のイベントをダブルクリック

JListを持つDefaultListModelがあります。

JList内のアイテムをダブルクリックイベントに反応させるにはどうすればよいですか?

68
Lobo
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());
        }
    }
});
128
Mohamed Saligh

簡単な解決策があることは知っていますが、キーボードと同様にマウスを使用できるようにするより一般的な解決策については、 List Action を確認してください。適切なGUI設計により、どちらのアプローチも使用できます。

11
camickr

(Mohamed Saligh、受け入れられた応答に基づく)

NetBeansを使用している場合

JList> Eventsウィンドウ> 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);
    }
}
10
SandroMarques