Java valueChanged()在TreeSelectionListener中被多次调用

Java valueChanged()在TreeSelectionListener中被多次调用,java,swing,jtable,jtree,jtreetable,Java,Swing,Jtable,Jtree,Jtreetable,我有一个树表,我正在上面添加一个treeSelectionListener。在选择一行时,函数valueChanged被调用4次。我通过将getOldLeadSelectionPath()选中为null,成功地将其控制为2次 有没有更好的方法将其限制为1 treeTable.getTree().addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(Tree

我有一个树表,我正在上面添加一个treeSelectionListener。在选择一行时,函数valueChanged被调用4次。我通过将
getOldLeadSelectionPath()
选中为null,成功地将其控制为2次

有没有更好的方法将其限制为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));
              }
        }
    }
});        

我知道这很愚蠢,但我成功地克服了这一点,通过创建一个全局变量,每次调用valueChanged时都会引发该变量,然后您可以执行以下操作:

global_variable += 1;

if (global_variable % 4 == 0){
    //your code here
}

字符串colGid和SwingConstants.CENTER之间的所有内容);是关于错误的概念,目标是什么,你想做什么,想法,理由你想让我粘贴代码的哪一部分@姆科贝尔