ツリー ノードが計算に時間がかかる子を持つ可能性がある Java ツリーを作成しています (この場合はファイル システムであり、接続されたドライブからファイルのリストを取得できないネットワーク タイムアウトが発生する可能性があります)。
私が見つけている問題はこれです:
getChildCount()
ユーザーがツリーの特定のブランチを開くことを具体的に要求する前に呼び出されます。JTree
ノードの横に + アイコンを表示するかどうかがわかるように、これが行われていると思います。からの子の正確な数は
getChildCount()
、潜在的に高価な操作を実行する必要がありますの値を偽造すると
getChildCount()
、ツリーは子の列挙を要求する前に、その数の子ノードにのみスペースを割り当てます。(「1」を返すと、さらに多くの子供がいるにもかかわらず、1 人の子供しか表示されません)
子の列挙には費用と時間がかかる可能性がありますが、それは問題ありません。しかし、私はgetChildCount()
子供の正確な数を知る必要があることに満足していません.
これを回避する方法はありますか?
追加:もう 1 つの問題は、ノードの 1 つがフロッピー ドライブを表している場合 (なんと古いことでしょう!)、ユーザーがファイルを要求する前にドライブがポーリングされることです。ドライブにディスクがない場合、システム エラーが発生します。
更新:残念ながら、TreeWillExpand
リスナーを実装することは解決策ではありません。これにより、拡張を拒否することができますが、表示されるノードの数は、 によって返される値によって依然として制限されTreeNode.getChildCount()
ます。