JTableに画像を挿入する際に問題が発生しました。私は検索し、2つの方法があることを発見しました。テーブルモデルのgetcolumnclassをオーバーライドするか、カスタムテーブルセルレンダーを作成できます。
私はこのコードで自分のセルレンダラーを作成することを選択しました:
public class MyRenderer extends DefaultTableCellRenderer {
/*
* @see TableCellRenderer#getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
ImageIcon icon = new ImageIcon("Images/green.png");
setText((String)value);
setIcon(icon);
return this;
}
}
テーブルのフィールドに入力する方法では、この行で画像を追加しています。
laneTable.getColumnModel().getColumn(4).setCellRenderer(new MyRenderer());
問題は、画像が空白の空白として表示されていることです。行を選択すると、4番目の列(画像のある列)を除いてすべてのフィールドが青で強調表示されるため、間違いなく何かがレンダリングされます。なぜ画像が表示されないのか、一生理解できません。行の高さをさまざまな方法で調整して、画像がそこにあるかどうかを確認しましたが、見えないか何かがあります。そうではないようです。
オーバーライドメソッドも実行しようとしましたが、netbeansが構文エラーを出していたため、構文が正しく実行されなかったと思います。また、実行方法に関する適切な例をまだ見つけていません。
ありがとう。
編集:以下のコードを使用してクラスをオーバーライドする、より簡単な方法を試しましたが、セルはまだ空白です。そして、ラベルへの画像の挿入をテストしましたが、それらは機能するので、パスは正しいです。
@Override
public Class getColumnClass(int column)
{
if (column == 4)
{
return ImageIcon.class;
}
return Object.class;
// other code; default to Object.class
}