列表选择侦听器的valueChanged发射的2倍以上
我添加listselectionlistener当我一个标签列表选择侦听器的valueChanged发射的2倍以上
table1 = new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
action(e);
}
};
ListSelectionModel SM = table1A.getSelectionModel();
SM.addListSelectionListener(table1);
SM = table1B.getSelectionModel();
SM.addListSelectionListener(table1);
当我点击了表的行上点击,行动(五)功能解雇了很多次。
private void action(ListSelectionEvent e)
{
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
if (lsm.getValueIsAdjusting())
{
// nothing
}
else
{
// my action here
}
}
动作(e)应该发射两次,一次是鼠标点击,一次是鼠标释放。我使用getValueIsAdjusting()来对抗鼠标点击,所以我的动作应该运行一次。但是,我的行为运行了很多次。我可以看到这个,因为我需要在我的动作中放置一个忙碌的对话框。
您需要将“value is Adjusting”设置为true。
SM.setValueIsAdjusting(true);
请重新命名SM到SM,因为一个java属性应该与小写字母来开头。(Java约定)
我需要设置这个? – user2545866 2014-09-01 09:46:48
在ListSelectionModel下SM = table1A.getSelectionModel(); – Toufic 2014-09-01 11:37:00
我想您所想一个'MouseListener'的。 'ListSelectionListener's监听所选内容的变化,而不是鼠标点击和释放。这些可能是非常不同的事情。 – gla3dr 2014-08-30 07:17:28
Well'ListSelectionModel SM = table1A.getSelectionModel(); SM.addListSelectionListener(table1); SM = table1B.getSelectionModel(); SM.addListSelectionListener(table1);'似乎是两次添加侦听器! – 2014-08-30 08:45:53
为了更快获得更好的帮助,请发布[MCVE](http://*.com/help/mcve)(最小,完整,可验证示例)。 – 2014-08-30 08:46:14