通过构造新的列表现器可以达到上述效果
不够控制单个cell就是比较麻烦了下面代码是改变某行的颜色,楼主棵针对自己的应用改改
        //新建列表现器------------------------//
        DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table,
                Object value, boolean isSelected, boolean hasFocus,
                int row, int column) {
                if (row % 2 == 0)
                    setBackground(Color.white); //设置奇数行底色
                else if (row % 2 == 1)
                    setBackground(new Color(206, 231, 255));
                    //设置偶数行底色
                return super.getTableCellRendererComponent(table, value,
                    isSelected,
                    hasFocus, row, column);
            }
        };使用:        try {
            for (int i = 1; i < jTable1.getColumnCount(); i++) {
                TableColumn column = jTable1.getColumn(jTable1.getColumnName(i));
                column.setPreferredWidth(100);
                column.setCellRenderer(tcr);  //添加列表现器
            }
        }
        catch (Exception e) {
            System.out.println(e);
            //格式调整出错,则不作处理,通过自动调整完成
        }

解决方案 »

  1.   

    你可以在主程序中设置
    标志,然后再TableCellRenderer实现的
    类中调用,满足标志条件的改变颜色,这样就不局限
    在单数行,或者双数行了
      

  2.   

    这种做法,只是做到静态的设置颜色,不能实现,那种table画面错误的及时显示。
    遗憾阿。
      

  3.   

    你可以在构造表格的时候,建立一个和每一个cell一一对应的数组(如cellFont[row][col][1]),来保存每个单元格的颜色,然后在getTableCellRendererComponent中得到并设置每一个每一个单元格的颜色。同时你还可以提供改变数组中保存的颜色来动态设置每一个单元格的颜色!
      

  4.   

    建议使用JBuilder,这样它可以很好的给你提示
      

  5.   

    setBackground()这个方法楼主肯定知道,我们是不是没有理解楼主的意思!
      

  6.   

    强烈要求楼主发挥想象力.
    重写的public Component getTableCellRendererComponent(JTable table,
                    Object value, boolean isSelected, boolean hasFocus,
                    int row, int column)方法中value即当前cell的对象的值.
    有了这个值以后, 你可以根据值得信息做任何的设置. 比如当value大于1000时前景色设置为红色.
    public Component getTableCellRendererComponent(JTable table,
                    Object value, boolean isSelected, boolean hasFocus,
                    int row, int column) {
        //调用super方法, 保证不需要关心的cell还是按照默认的方案描述
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        Number number = (Number)value;
        if (number.longValue() > 1000) {
            setForeground(Color.red);
        } else {
            setForegournd(UIManager.getColor("Label.foreground");
        }
        return this;
    }
    绝对动态!