我有这个8x8表格,并且我想用红色为表格顶部的第一个和第二个单元格的网格着色。我的问题是可以这样做吗?
答案 0 :(得分:3)
编辑:我删除了这个,因为我认为这不是OP想要的。我已根据OP的要求取消删除它。
我有这个8x8表,我想为第一个网格着色 并且桌子顶部的第二个单元格带有红色。我的问题 可以这样做吗?
当然可以。
执行此操作的一种方法是扩展现有渲染器并覆盖 getTableCellRendererComponent 方法。
例如:
public class GridlineCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent (
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column
) {
final Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if ( row == 0 && (column == 0 || column ==1 ) {
cell.setBackground( Color.RED );
}
return cell;
}
}
然后,您需要警告您的JTable您希望将此渲染器用于某些类型的数据。
例如,如果要将其用于包含Integer的单元格,则以下内容应该起作用:
JTable myJTable = ...
myJTable.setDefaultRenderer(Integer.class, new GridlineCellRenderer() );
答案 1 :(得分:3)
因为您只想根据位置而不是类型影响某些单元格,请覆盖prepareRenderer()
并返回所需单元格的红色Border
组件。另请参阅How to Use Tables。