双击重复按下按钮的次数

时间:2014-01-29 00:24:58

标签: java swing jlist mouselistener

我有一个JList,每次双击列表中的值时都会运行代码。按下按钮时会填充该值。我的问题是每次单击按钮然后双击JList值,它会按下按钮多次重复代码。

例如,第一次看起来很棒,但是如果我再次按下按钮来更改JList值,它将执行两次双击的代码。如果我第三次按它,它将执行代码三次,依此类推。我是新手,如果这很容易就道歉。谢谢你的任何信息。代码如下,如果有必要,请告诉我。

public DefaultListModel results(StringBuilder message)
{   

    DefaultListModel model = new DefaultListModel();
    model.addElement(message);
    showOption.setModel(model);

    MouseListener mouseListener = new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {

            if (e.getClickCount() == 2) 
            {
                int index = showOption.locationToIndex(e.getPoint());
                Object o = showOption.getModel().getElementAt(index);
                System.out.println("Double-clicked on: " + o.toString());
            }
        }
    };

    showOption.addMouseListener(mouseListener);
    return model;
}

1 个答案:

答案 0 :(得分:4)

每次调用MouseListener时,您都会添加新的results

此...

DefaultListModel model = new DefaultListModel();
model.addElement(message);
showOption.setModel(model);

显示showOptionJList的现有实例(这很好),但是你做了......

MouseListener mouseListener = new MouseAdapter() {
    //...
};

showOption.addMouseListener(mouseListener);

这会向MouseListener添加另一个JList,因此每次调用此方法时,都会向MouseListener添加另一个JList

首次创建MouseListener时,向JList添加一个{{1}}。