我很难理解cellrenderer并找到指定问题的解决方案。 我想在选中时专门给单元格着色,然后单击一个按钮,然后让程序提醒哪些单元格已经着色,哪些不是。因此,如果我为其中一个颜色着色,则应该在其余时间保持颜色,直到新游戏开始。 我的确有它可以给单元格着色,但我无法弄清楚如何使jTable保持着色的颜色。如何选择一个新的彩色jTable单元格?
我在带有GUI的Netbeans中工作。这是我第一次,我是首发,所以请对我和我的代码温柔。我确实阅读过渲染教程等,但找不到工作方式,或者我无法在我的小程序中使其工作。
这是在initcomponents()之后;
jTableScoreFormulier.setDefaultRenderer(Object.class,new MyRenderer());
然后你演这个角色使表:
jTableScoreFormulier.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"Rood", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
{"Geel", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
{"Groen", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3", "2"},
{"Blauw", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3", "2"}
},
new String [] {
"Kleur", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "Sluit"
}
));
这里是我的渲染器:
class MyRenderer implements TableCellRenderer {
public final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Color foreground, background;
if (isSelected) {
foreground = Color.WHITE;
background = Color.BLACK;
} else {
foreground = Color.BLACK;
background = Color.WHITE;
}
renderer.setForeground(foreground);
renderer.setBackground(background);
return renderer;
}
}
}
如何在模型中将Boolean.FALSE作为默认值存储? –
那么,你需要存储一个自定义对象,而不是只存储一个字符串(如2,3,4 ...)在TableModel中。该对象将包含两个属性1)字符串2)布尔值。然后,渲染器只从对象中获取两个值,然后根据数据渲染对象。 – camickr