セルの内容に応じて画像を表示したいJTableがあります。これを達成するには、すでに持っている独自のカスタムセルレンダラーを実装する必要があることを理解していますが、最初の画像が表示されるとすぐにプログラムはセルの内容に関係なく、他のセルに画像を描画します。私はほとんどすべてを試しましたが、インターネットで解決策を探しましたが、すべて役に立ちませんでした。これが私のコードです:
public class GameBoard extends JTable
{
public GameBoard()
{
super(new GameBoardModel());
setFocusable(false);
setCellSelectionEnabled(true);
setRowHeight(26);
TableColumn column = null;
for (int i = 0; i < getColumnCount(); i++)
{
column = getColumnModel().getColumn(i);
column.setPreferredWidth(26);
}
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setDefaultRenderer(Object.class, new CellRenderer());
}
private class CellRenderer extends DefaultTableCellRenderer
{
private CellRenderer()
{
setHorizontalAlignment(JLabel.CENTER);
}
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column)
{
if (value.toString().equals("X"))
{
URL test = getClass().getResource(resources/icon.png");
setIcon(new ImageIcon(test));
}
else
setText(value.toString());
return this;
}
}
私がそれらの線に沿ってどこかでばかげたことをしているなら、私を許してください. . .
前もってありがとう、ジグ。