1

我正在开发一个 Swing 应用程序,我需要在其中定期刷新树。树中的每个节点代表在独立线程中运行的特定任务。每个节点都包含它执行的任务的复选框 + 状态指示器(由 JPanel 表示)。我编写了一个自定义 TreeCellRenderer 以更改组件外观。我正在我的渲染器中实现 javax.swing.tree.TreeCellRenderer 接口并覆盖它的以下方法。

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus)

我想让此方法每 1 秒调用一次,以便刷新每个节点执行的底层任务的状态。

有人可以告诉我如何每 1 秒调用一次 getTreeCellRendererComponent() 吗?应该从单独的线程触发哪个事件?我目前通过在包含 JTree 的 JPanel 上调用 updateUI() 方法来实现这一点,但这会阻止我的整个 UI,直到调用从 getTreeCellRendererComponent() 返回。

[更新]: 我正在使用 DefaultTreeSelectionModel,我不想在添加或删除新节点时更新 JTree,而是在与每个节点关联的任务完成时更新 JTree。当我单击 UI 中添加的“运行”按钮时,这些任务就会执行。按下运行按钮后,我想在添加到节点的 JPanel 中使用不同颜色更新每个节点。

4

0 回答 0