列表选择侦听器valuechanged启动了2次以上

时间:2014-08-30 06:42:53

标签: java swing jtable listselectionlistener

当我点击标签

时,我添加了listselectionlistener
table1 = new ListSelectionListener()
{
  public void valueChanged(ListSelectionEvent e)
  {
    action(e);
  }
};
ListSelectionModel SM = table1A.getSelectionModel();
SM.addListSelectionListener(table1);
SM = table1B.getSelectionModel();
SM.addListSelectionListener(table1);

当我点击表格的行时,动作(e)功能会多次触发。

private void action(ListSelectionEvent e)
{
  ListSelectionModel lsm = (ListSelectionModel) e.getSource();

  if (lsm.getValueIsAdjusting())
  {
   // nothing
  }
  else
  {
   // my action here
  }
}

动作(e)应该触发两次,一次是鼠标点击,一次是鼠标释放。我曾使用getValueIsAdjusting()来反击鼠标点击,因此我的操作应该运行一次。但是,我的行动很多次。我可以看到这一点,因为我需要在我的行动中加入一个忙碌的对话框。

1 个答案:

答案 0 :(得分:1)

您需要将“value is Adjusting”设置为true。

 SM.setValueIsAdjusting(true);

请将SM重命名为sM,因为java属性应以小写字母开头。(Java Convention)