• 締切済み

JTableのCellにJLabelを埋め込むには?

JTableのCellにJLabelを埋め込みたいと思うのですが、独自にCellEditorを作成しなければ、不可能でしょうか? *JTableのCellにわざわざJLabelを埋め込みたい理由は、あるセルの要素(文字列情報)に対してイメージアイコンを付加してJTableに表示したいからです。

みんなの回答

noname#49664
noname#49664
回答No.2

JLabelで表示をさせたいのですよね? なら、CellEditorではなくCellRendererでしょう。 まず、レンダリング時にJLabelを返すようなTableCellRendererクラスを定義します。 // TableCellRendererを用意する class MyRenderer extends DefaultTableCellRenderer { public Component getTableCellRendererComponent (JTable table, Object value,boolean isSelected,boolean hasFocus,int row,int column) { JLabel jl = new JLabel(); ・・・必要な処理・・・ return jl; } } そして、JTableを作成した際、このTableCellRendererインスタンスを使用したいコラムにsetCellRendererで組み込みます。 // 組み込み JTable jt1 = new JTable(); jt1.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());  こんな感じで、JLabelを使ってJTableのセルを表示できるはずです。これは、表示のみで、編集については別途CellEditorを用意して組み込む必要があるでしょう。

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.1

セルの描画を担当するDefaultTableCellRendererはJLabelを継承したクラスです。 JLabelのようにアイコンを付加したい場合はsetIconメソッドをRendererに対して直接使用できる、だったはずです。 昔同じような実装をやったことがありますが、実装方法を良く思い出せません。うろ覚えで申し訳ないです。

関連するQ&A

専門家に質問してみよう