0

JXTreeTable の異なる列に異なるレンダラーを割り当てるにはどうすればよいですか。JXtreeTable には、さまざまな列タイプ (通貨、日付など) があります。JXTable では、getColumn(identifier).setCellRender(TableCellRender) メソッドを使用しました。JXTreeTable はどうすればよいですか?

4

1 に答える 1

0

同じタイプのすべての列が同等に処理される限り、クラスごとにデフォルトのレンダラーを割り当てることができます。たとえば、テーブルに java.util.Date 値を持つ 2 つの列があり、両方を同じ方法で処理したいとします。

myTreeTable.setDefaultRenderer(java.util.Date.class, new DefaultTableRenderer(StringValues.DATE_TO_STRING));

最初の引数は、このレンダラーで処理するオブジェクトのタイプです。2 番目の引数は、セル レンダラーです。SwingX には、DefaultTableRenderer と呼ばれる非常に単純なレンダリング メカニズムが付属しています。いくつかの可能な引数を取りますが、最も単純なものはStringValueインスタンスを提供することです。これは、実装時に任意のオブジェクトを受け取り、それを何らかの方法で文字列に変換するインターフェイスです。StringValues クラスには、定義済みの実装がいくつか含まれています。上記の例では、セル内の java.util.Date オブジェクトをデフォルトの DateFormat インスタンスに渡し、文字列の結果を返す StringValues.DATE_TO_STRING を使用しています。処理したいオブジェクトのすべてのクラスについて、このように続けます。

単一の列のみに特定のレンダリングが必要な場合は、列を呼び出しの途中に接続するだけです。

myTreeTable.getColumnExt(myColumnIdentifier).setCellRenderer(java.util.Date.class, new DefaultTableRenderer(myGloriousStringValueConverter));

呼び出しがsetDefaultCellRendererではなくなったことに注意してください。

このレンダリング メカニズムは、SwingX の優れた機能の 1 つです。使いやすく、ハイライター パイプラインと組み合わせると非常に強力です。

これはすべて、JXTreeTable のテーブル部分に当てはまります。階層列 (最初の列) は同じ方法でセットアップできますが、呼び出しが

myTreeTable.setTreeCellRenderer(new DefaultTreeRenderer(myGloriousStringValue));
于 2014-07-02T10:06:19.537 に答える