Я немного работаю над JTable
. В настоящее время это выглядит так: JTable
.
Как видите, он продолжает закрашивать последним цветом, и по какой-то причине я не могу это исправить.
String[] columnNames = { "Spieler", "Verfügbare Truppen", "besetzte Länder" };
Object[][] data = { { Player1.getName(), Player1.troopscore, Player1.countryscore },
{ Player2.getName(), Player2.troopscore, Player2.countryscore },
{ Player3.getName(), Player3.troopscore, Player3.countryscore },
{ Player4.getName(), Player4.troopscore, Player4.countryscore },
{ Player5.getName(), Player5.troopscore, Player5.countryscore },
{ Player6.getName(), Player6.troopscore, Player6.countryscore },
};
table = new JTable(data, columnNames) {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
Component comp = super.prepareRenderer(renderer, row, col);
for (int i = 0; i < playerlist.size(); i++) {
Object value = getModel().getValueAt(i, 0);
{
if (row == i && col == 0 && value == playerlist.get(i).getName()) {
{
System.out.println(value);
comp.setBackground(playerlist.get(i).player_color);
}
}
}
}
return comp;
}
};
Буду признателен за вашу помощь :)
У вас НЕ должно быть кода цикла в методе prepareRenderer (...). Таблица автоматически вызовет средство визуализации для каждой ячейки.
Вы должны звонить
comp.setBackground
каждый раз. Циклы должны определять, какой цвет использовать, а не вызывать ли comp.setBackground. Осторожность: Вам необходимо сравнить значения с методомequals
объекта. В большинстве случаев сравнить их с==
не удастся.