双击JList元素上的事件

时间:2010-12-03 10:36:22

标签: java swing jlist defaultlistmodel

我有JList DefaultListModel

如何让JList中的项目对双击事件做出反应?

3 个答案:

答案 0 :(得分:126)

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

答案 1 :(得分:10)

我知道您有一个简单的解决方案,但您可能需要查看List Action以获得更通用的解决方案,以便您使用鼠标和键盘。正确的GUI设计应该允许使用任何一种方法。

答案 2 :(得分:10)

(基于Mohamed 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);
    }
}