我有一个包含布尔字段的类。我在JTable中显示了这些类的列表。 我创建了一个CustomCellRenderer来改变行的背景颜色,所以我可以有不同的颜色。
问题:当在Boolean字段上应用customrenderer时,会呈现(true / false)而不是默认渲染器的复选框。
我如何同时拥有两种功能:背景颜色和复选框?
这是customrenderer代码:
public class CustomCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object obj,boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(table, obj,isSelected, hasFocus, row, column);
if (isSelected) {
cell.setBackground(Color.red);
} else {
if (row % 2 == 0) {
cell.setBackground(new Color(110,134,214));
} else {
cell.setBackground(Color.lightGray);
}
}
return cell;
}
}
提前感谢您的帮助。
答案 0 :(得分:0)
我明白了。
我发现了这个:
add a check box to only one cell in a JTable
我使用了我从CustomCellRenderer的getTableCellRendererComponent方法调用的BooleanRenderer。
我刚在这个方法中添加了一行委托渲染:
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
//delegate if boolean
if(value instanceof Boolean) return booleanRenderer.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
if (isSelected) {
setBackground(selectedColor);
setForeground(unSelectedColorWhite);
} else {
if (row % 2 == 0) {
setBackground(unSelectedColorBlue);
} else {
setBackground(unSelectedColorWhite);
}
setForeground(selectedColor);
}
setText(" " + table.getValueAt(row, column));
selected = isSelected;
return this;
}