76

我有JList一个DefaultListModel

如何使项目JList对双击事件做出反应?

4

3 回答 3

148
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());
        }
    }
});
于 2010-12-03T10:45:13.870 回答
12

(基于 Mohamed Saigh,接受的回应)

如果您使用的是 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);
    }
}
于 2015-03-18T08:28:06.540 回答
11

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

使用的最基本的例子ListAction是:

String[] data = { "zero", "one", "two", "three", "four", "five" };
JList list = new JList( data );

Action displayAction = new AbstractAction()
{
    public void actionPerformed(ActionEvent e)
    {
        JList list = (JList)e.getSource();
        System.out.println(list.getSelectedValue());
    }
};

ListAction la = new ListAction(list, displayAction);
于 2010-12-03T16:34:51.010 回答