2013-09-16 1 views
0

У меня есть таблица дерева, и я добавляю в нее treeSelectionListener. При одном выборе строки функция valueChanged получает вызов 4 раза. Мне удалось довести его до двух раз, установив getOldLeadSelectionPath() на null.valueChanged() вызывается несколько раз в TreeSelectionListener

Есть ли лучший способ ограничить его 1?

treeTable.getTree().addTreeSelectionListener(new TreeSelectionListener() { 
    @Override 
    public void valueChanged(TreeSelectionEvent e) { 
     if (e.getOldLeadSelectionPath() == null) { 
      int row = treeTable.getTable().getSelectedRow(); 
      String colGid = treeTable.getTable().getModel().getValueAt(row, 1).toString(); 
      if (treeTable.getTree().getSelectionPath().getPathCount() == 3) { 
       KPropertyTable columnProperty = createColumnProperty(colGid); 
       propertyPanel.removeAll(); 
       propertyPanel.add(columnProperty, BorderLayout.CENTER); 
       propertyPanel.updateUI(); 
      } else { 
       propertyPanel.removeAll(); 
       propertyPanel.add(new JLabel("Select a column", SwingConstants.CENTER)); 
       } 
     } 
    } 
});   
+0

все между String colGid и SwingConstants.CENTER)); это неправильная концепция, цель, что вы хотите сделать, идеи, причины – mKorbel

+0

Итак, какую часть кода вы хотите, чтобы я вставлял? @mKorbel –

ответ

-1

Я знаю, что это глупо, но мне удалось преодолеть это, сделав глобальную переменную, которая получает поднятую каждый раз, когда ValueChanged называется, а затем вы можете сделать что-то вроде этого:

global_variable += 1; 

if (global_variable % 4 == 0){ 
    //your code here 
} 
Смежные вопросы