java - 如何根据 JTree 选择优化显示不同的 JPanel

标签 java swing jtree

我有一个包含多个节点的 JTree,每个节点都有一个不同的关联 JPanel,我想向用户显示。我已经使用了自定义的 TreeCellRenderer,我的代码目前可以正常工作,但是(我认为)它有点太笨重了,我对此感到担忧

1) 如果我只选择一个树节点,我的代码将不断刷新 JPanel。一旦所选节点显示了 JPanel 一次,我不希望它再次显示,除非在其间选择了另一个节点。

2) 如果用户在我的计时器为节点 1 运行时选择了不同的节点(比如节点 2),我不想费心显示节点 1 的 JPanel,因为用户已经离开它。

这是我感兴趣的代码:

Component ret = super.getTreeCellRendererComponent(tree, value,
            selected, expanded, leaf, row, hasFocus);

    DefaultMutableTreeNode entry = (DefaultMutableTreeNode)value;


    // if the node is selected
    if(sel)
    {
// set the background of the node
        setBackgroundNonSelectionColor(new Color(0x91, 0xC5, 0xFF));
// display the JPanel for the node
        displayPanel(entry);
    }
    else
    {
// if the node isn't selected then no background selection color
        setBackgroundNonSelectionColor(Color.WHITE);
    }


    return ret;

显示面板函数:

// display the node's JPanel after sleeping for 1s
private void displayPanel(final DefaultMutableTreeNode entry)
{
    Thread thr = new Thread(){

        public void run(){

                // sleep for 1000ms
                    CF.sleep("1000");

// display the panel for this node
                    CF.displayPanel(entry);
            }
          };
    thr.start();
}

老实说,DefaultTreeCellRenderer 还是让我有些摸不着头脑。我将不胜感激任何有关如何高效运行的建议。

最佳答案

也许我在这里遗漏了一些东西,但你不能只在树上使用 Tree Selection 监听器吗?

tree = new JTree(treeModel);
tree.addTreeSelectionListener(new TreeSelectionListener() {     
    public void valueChanged(TreeSelectionEvent arg0) {
       //Code here to get selection and display panel
    }
});

关于java - 如何根据 JTree 选择优化显示不同的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164763/

相关文章:

java - 检索 JTable 内 JCheckbox 的状态

java - 更新渲染的树单元

java - JTree 异步节点创建与 JGraph 库不一致

Java:程序无法连接时调用方法

java - 是否可以一次将所有 JPanes 设置为相同的背景颜色?

Java JList 仅在最小化或最大化后刷新

java - 更改 DefaultMutableTreeNode 的文本样式

java - 如何使用 Spring boot 应用程序连接具有不同 Ip 和凭据的 2 个 mySql 数据库

java - (Enterprise GlassFish v3 build 11) 通信链路问题 (MySQL DB)

java - 在 Java 中定义复制构造函数