JTableに画像を挿入する際に問題があります。私は検索し、2つの方法があることを発見した。テーブルモデルのgetcolumnclassをオーバーライドするか、カスタムtablecellrenderを作成することができます。JTableに画像を挿入する
私はこのコードで自分のセルレンダリングを作ることにしました:私は私のテーブルのフィールドに入力する方法では
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
}
おっと、あなたは私よりも高速です。 – camickr
オーバーライドを使って画像をレンダリングする方法が表示されません.... – JMD
@Jesse:オーバーライドは、指定した列の最初のセルのオブジェクトのクラスを列全体のクラスとして使用することを意味しています。そのセルのモデル値は 'ImageIcon'なので、' ImageIcon.class'を返します。 –