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 秒ごとに呼び出されるようにして、各ノードが実行する基になるタスクのステータスを更新するようにします。

getTreeCellRendererComponent() を 1 秒ごとに呼び出す方法を教えてください。別のスレッドから発生するイベントはどれですか? 現在、JTree を含む JPanel で updateUI() メソッドを呼び出すことでこれを実現していますが、呼び出しが getTreeCellRendererComponent() から戻るまで、UI 全体がブロックされます。

[UPDATE]: DefaultTreeSelectionModel を使用しています。新しいノードが追加または削除されたときに JTree を更新したくありませんが、各ノードに関連付けられたタスクが終了したときに JTree を更新します。UI に追加された [実行] ボタンをクリックすると、タスクが実行されます。実行ボタンが押されたら、ノードに追加された JPanel で各ノードを異なる色で更新したいと思います。

4

0 に答える 0