私が書いているプログラムには、自分のデザインのオブジェクトを格納するJTreeがあります。DefaultTreeCellRendererの独自の拡張を作成し、getTreeCellRendererComponentをオーバーライドして、いくつかのボタンなどを含むJPanelを返しました。私が見つけたのは、追加したボタンがボタンのように機能しないことでした。これにより、コンポーネントとの相互作用がツリーセルによって「盗まれた」と思われます。(ボタンをクリックすると、ボタンを囲むコンテナもクリックされ、ツリーはクリックに対して独自の応答を示します。)
だから私の質問はこれです:
ツリーの基本的な機能といくつかのボタンが必要な場合、どのようなアプローチを使用する必要がありますか?
- 同じルートを続けます。ある種のマウスリスナーを追加して、ボタンに機能を手動で追加します。
- 同じルートを続けます。既存のマウスリスナーを削除し、独自のマウスリスナーを追加して、適切な動作を実現します。
- 行ったものとは少し異なるクラスまたはインターフェースを拡張または実装します(DefaultMutableTreeNodesではない場合、DefaultTreeCellRendererではない場合など)。既存のXXXXを使用して、実行しようとしていることを実行します。
- JTreeの使用は避けてください。あなた自身のものを作ってください、それはそれほど難しいことではありません。
私は最後のオプションに傾いています-とにかく木の折り畳み動作を実際に望まない可能性が十分にあるので、私は自分自身の構造を作ることができます。しかし、そのオプションを選んだとしても、どうしたらいいのか知りたいです。