我很难理解cellrenderer并找到指定问题的解决方案。 我想在选择时专门为单元格着色,然后单击一个按钮然后让程序提醒哪些单元格已经着色,哪些单元格不是。所以如果我给它上色,它应该在剩下的时间保持颜色,直到新的游戏开始。 我确实拥有它可以为单元格着色,但我无法弄清楚如何使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;
}
}
}
答案 0 :(得分:0)
jTableScoreFormulier.setRowSelectionAllowed(true);
jTableScoreFormulier.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
这样可以进行多项选择
答案 1 :(得分:0)
我无法弄清楚如何使jTable保持彩色的颜色。
一种方法是将信息保存在TableModel中。因此,您可能只需在模型中存储Boolean.TRUE或Boolean.FALSE以指示选择了哪些单元格。所有单元格的默认值为Boolean.FALSE然后,当您单击单元格时,使用setValueAt(Boolean.TRUE, row, column)
方法更新TableModel以更改选择。
然后您的渲染器代码变为:
//if (isSelected) {
Boolean colored = (Boolean)value;
if (colored) {
...