Java 列表选择侦听器值已更改激发超过2次
我在单击选项卡时添加listselectionlistenerJava 列表选择侦听器值已更改激发超过2次,java,swing,jtable,listselectionlistener,Java,Swing,Jtable,Listselectionlistener,我在单击选项卡时添加listselectionlistener table1 = new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { action(e); } }; ListSelectionModel SM = table1A.getSelectionModel(); SM.addListSelectionListener(table1); SM = table1B.g
table1 = new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
action(e);
}
};
ListSelectionModel SM = table1A.getSelectionModel();
SM.addListSelectionListener(table1);
SM = table1B.getSelectionModel();
SM.addListSelectionListener(table1);
当我单击表的行时,action(e)函数多次启动
private void action(ListSelectionEvent e)
{
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
if (lsm.getValueIsAdjusting())
{
// nothing
}
else
{
// my action here
}
}
动作(e)应该触发两次,一次是鼠标单击时,一次是鼠标释放时。我必须使用getValueIsAdjusting()来阻止鼠标单击,因此我的操作应该运行一次。但是,我的动作运行了很多次。我可以看到这一点,因为我需要在我的操作中放置一个繁忙的对话框。您需要将“值正在调整”设置为true
SM.setValueIsAdjusting(true);
请将SM重命名为SM,因为java属性应该以小写字母开头。(java约定)我想您正在考虑使用
鼠标侦听器<代码>列表选择侦听器
s侦听对所选内容的更改,而不是鼠标单击和释放。这些可能是非常不同的事情;SM.addListSelectionListener(表1);SM=table1B.getSelectionModel();SM.addListSelectionListener(表1)代码>似乎添加了两次侦听器!为了更快地获得更好的帮助,发布一个(最小、完整、可验证的示例)。我需要在哪里设置它?在ListSelectionModel SM=table1A.getSelectionModel()下;