Java Swing:どんな方法は定義し、JTreeのユーザオブジェクト"?
-
24-09-2019 - |
質問
をお使いの場合 JTree
, では、"ユーザオブジェクト"の DefaultMutableTreeNode
設定できます。このようなものを表示すると、 toString()
値を使用します。これは私が。
変更するには、どうすればいいでうユーザオブジェクトが表示されるか。
注意:私のユーザオブジェクト は されていると思いますが、異なるよ String
を維持できるマッピングのツリーのユーザオブジェクト。
解決
私はあなたの問題何得ることはありません。
それは理にかなっているので、 DefaultMutableTreeNode
は、ユーザーオブジェクトにtoString
メソッドを使用します。 JTree
は、あなたのオブジェクトにその文字列rapresentationを尋ねるように、オブジェクトを描画するための文字列を必要okです。
あなたが本当にあなたのオブジェクトにtoString
を呼び出す避けるために必要がある場合は、とにかくそれを文字列rapresentationを提供する方法が必要になりますが、あなたがあなた自身のMutableTreeNode
を記述する必要があります。
class MyTreeNode implements MutableTreeNode
{
UserObject yourObject;
MyTreeNode(UserObject yourObject)
{
this.yourObject = yourObject;
}
// implement all needed methods to handle children and so on
public String toString()
{
// then you can avoid using toString
return yourObject.sringRapresentation();
}
}
しかし、私は本当に他に、あなたはDefaultMutableTreeNode
メソッドをオーバーライドすることでtoString
を拡張しようとすることができます。これを行うためのポイントが表示されていないが、あなたはあなたのオブジェクトまたは一部ののダウンキャストのへの追加の参照が必要になります必要になります。
あなたが本当に文字列とは異なる可視化が必要な場合は、独自のレンダリングされたその実装のTableCellRenderer
を記述する必要があります。
他のヒント
オーバーライドtoString()ユーザオブジェクトを提供 TreeCellRenderer, 基本例
別の方法としては、あなただけのユーザーオブジェクトの示すテキストを気にしてTreeCellRenderを気にしたくない場合は:拡張JTreeのとオーバーライド<のhref = "http://docs.oracle.com/javase/7/ドキュメント/ API / javaxの/スイング/ JTree.html#convertValueToText%28java.lang.Object、%20boolean、%20boolean、%20boolean、%20int、%20boolean%29" のrel = "nofollowを"> convertValueToText をあなたとそのオブジェクトの説明文字列を作成する独自のコードます。