質問

をお使いの場合 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 をあなたとそのオブジェクトの説明文字列を作成する独自のコードます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top