JTable在Java中着色特定网格线

时间:2012-02-22 22:44:51

标签: java swing jtable renderer

我有这个8x8表格,并且我想用红色为表格顶部的第一个和第二个单元格的网格着色。我的问题是可以这样做吗?

2 个答案:

答案 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