1

私は次のコードを持っています

TreePath tp = jTree.getSelectionPath();
String path = tp.getPath().toString();

これにより、パスがとして設定されますLjava.lang.Object;@33530691。これは、

クラスObjectのtoStringメソッドは、オブジェクトがインスタンスであるクラスの名前、アットマーク文字 `@'、およびオブジェクトのハッシュコードの符号なし16進表現で構成される文字列を返します。つまり、このメソッドは次の値に等しい文字列を返します。

getClass()。getName()+'@' + Integer.toHexString(hashCode())

しかし、実際にこの値を文字列として取得するにはどうすればよいでしょうか。

4

9 に答える 9

1

getPath()は、ツリー内のコンポーネントを表す文字列値の配列を返します。ルートの文字列表現が必要な場合は、getPath()[0]を実行します。

于 2012-08-31T09:57:34.243 に答える
0

Stringの toString()メソッドはdefalutオーバーロードによるものであるため、ここではStringパスに問題はありませんが、TreePath tp.

私はあなたが見てみる必要があると思いますtp

于 2012-08-31T09:57:36.163 に答える
0

よくわかりません。あなたが投稿した見積もりでは、それはすでに答えられていませんか?

getClass().getName() + '@' +Integer.toHexString(hashCode())メソッドのデフォルトの実装toString()ですが、より適切な表現が必要な場合は、それをオーバーライドできます(TreePathケースで拡張する必要があることに注意してください)。

編集:私は思う、私は今理解している:

TreePath.getPath()オブジェクト配列を返すのでjava.lang.Object、出力でそれを取得します。

于 2012-08-31T09:58:40.517 に答える
0

ツリーのコンポーネントであるオブジェクトは、toString()メソッドをオーバーライドする必要があります。あなたはそれが何を返すかでそれを上書きすることができます。カスタムオブジェクトをツリーに追加しているので、そのオブジェクトとそのtoString()メソッドを制御していると思います。

于 2012-08-31T09:59:25.950 に答える
0

値のコンマ区切りの文字列を取得したい場合は、次のことができます

文字列パス=newArrayList(tp.getPath())。toString();

于 2012-08-31T10:01:58.890 に答える
0

次のようなものを試してください。

Object[] treeNodes = tp.getPath();
StringBuilder sb = new StringBuilder();
for(Object tn : treeNodes) {
    sb.append(File.separatorChar).append(tn.toString());
}
String path = sb.toString();
于 2012-08-31T10:02:16.813 に答える
0

オブジェクトの配列があります(すべて文字列の場合があります)

これらtoStringには、Arrays.toString()を使用する必要があります

String path = Arrays.toString(tp.getPath());
于 2012-08-31T10:03:53.100 に答える
0

Arrays.asList(tp.getPath()).toString()出力/ロギングのみの場合は、十分だと思います。

于 2012-08-31T10:05:19.077 に答える
0

TreePathオブジェクトは、ルートノードから実際のノードに移動するためのパス全体を表します。これを呼び出すとgetPath、ルートノードと実際に選択されたノード、およびその間のすべてのノードを含む配列が返されます。

「正しい文字列」を取得する方法は、実際に何を達成したいかによって異なります。

  • 実際に選択されたノードの文字列表現が必要な場合は、次のgetLastPathComponent方法を使用します

    TreePath tp = jTree.getSelectionPath();
    String path = tp.getLastPathComponent().toString();
    
  • 完全なパスが必要な場合は、配列をループする必要があります

    TreePath tp = jTree.getSelectionPath();
    StringBuilder pathBuilder = new StringBuilder();
    for( Object node : tp.getPath() ){
      pathBuilder.append( node.toString() );
      //possibly append a separator as well
    }
    String path = pathBuilder.toString();
    

    または、メソッドの代わりにArrays#toStringメソッドを使用しますtp.getPath()toString

于 2012-08-31T10:06:14.927 に答える