Я добавляю listselectionlistener, когда я нажимаю на вкладку
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() для противодействия щелчку мыши, поэтому мое действие должно выполняться один раз. Но мои действия выполняются много раз. я вижу это, потому что мне нужно поместить занятый диалог в свое действие.
MouseListener
.ListSelectionListener
s прислушиваются к изменениям того, что выбрано, а не к щелчкам мыши и отпусканиям. Это могут быть очень разные вещи. - person gla3dr   schedule 30.08.2014ListSelectionModel SM = table1A.getSelectionModel(); SM.addListSelectionListener(table1); SM = table1B.getSelectionModel(); SM.addListSelectionListener(table1);
кажется, слушатель добавляется дважды! - person Andrew Thompson   schedule 30.08.2014