JTree を毎秒更新するためのスレッド化されたソリューションを探しています。
基本的に、私は...
- 外部ファイルのインポート
- それから列挙を作成する
- 列挙からツリーを構築する
外部ファイルはランダムに変更される可能性があり、ツリー内のデータはこの変更を適切なタイミングで表す必要があります。JTree が (パネル経由で) あるコンテンツ ペイン全体を再描画せずにツリーを再描画するにはどうすればよいでしょうか?
ありがとう!
JTree のモデルに更新を起動させるだけで、JTree はそれ自体を再描画します。これを行う最も簡単な方法は、DefaultTreeModel を使用することです。ファイルが変更されたら、ファイルから TreeNode を作成し (場合によっては DefaultMutableTreeNode を使用)、新しく作成したノード ツリーのベース ノードを使用してモデルで setRoot() を呼び出します。
ツリーが DefalultTreeModel を使用している場合は、これを試してください
((DefaultTreeModel)yourTree.getModel()).reload();
おそらくどこかでこれを読んでいると思います:Swingはスレッド保存ではありません;)。とにかく別のスレッドから Swing コンポーネントを更新したい場合は、他のスレッドが Swing のイベント スレッドで更新をプッシュするようにする必要があります。これを行うメソッドは EventQueue.invokeAndWait(Runnable) です。
同様の問題 (JTree をディレクトリ ツリーと同期させる) のコード例を次に示し ます。
FileMonitor.java ファイルに興味があるはずです。
コンポーネントを再JTree
ペイントすると、ペイント領域はそれを含むパネルの残りの部分から切り取られます。