0
我有一個JTable,我想顯示一個圖像取決於單元格的內容,我明白爲了完成這個我必須實現我自己的自定義單元格渲染器,但是,只要在單元格上繪製第一個圖像,程序就會在其他單元格上繪製圖像,而不管其內容如何。我已經嘗試了幾乎所有東西,並且也在互聯網上尋找解決方案,但都無濟於事。這裏是我的代碼:JTable自定義TableCellRenderer顯示圖像
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;
}
}
請原諒我,如果我在這些行的某處愚蠢的東西。 。 。
在此先感謝, 曲折。讓您得到渲染器的默認設置的方法開始
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
:
'UIManager.getIcon(「html.pendingImage」)'是一個方便的佔位符。 – trashgod
我要感謝你一百萬次,我不能相信的東西真是太傻了造成這個問題很多XD,這個固定對我來說: 如果(value.toString()等於(「X」)){ setIcon(new ImageIcon(test)); setText(「」); } else { setIcon(null); setText(value.toString()); } – user2426634