关于JTable中对单元格渲染背景色的问题几天都没有得到解决,我现在想了解一下DefaultTableCellRenderer这个类中的方法
getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column);中参数默认的值是从哪里获得的?

解决方案 »

  1.   

    这个当把Render被Table使用的时候会自动调用的。参数table就代表使用Render的表,value为单元格内容,isSelect,hasFocus表示单元格被选中时的状态(你的Render一定要考虑),后面两个参数表示单元格的行列号。
      

  2.   


    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                    JLabel label = new JLabel();
                    label.setOpaque(true);
                    if(isSelected){
                        label.setBackground(Color.red);
                    }else{
                        label.setBackground(Color.white);
                    }
                    return label;
                }
      

  3.   

    小伙子,编程重要的是思想。
    那比如说在单击单元格时如何改变此单元格的背景颜色呢?----你应该考虑到单元格的单击事件,改变颜色是由单击事件触发的。下面给3楼仁兄代码加点注释,他的思想是对的。public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      JLabel label = new JLabel();-----申请标签
      label.setOpaque(true);
      if(isSelected){----判断是否选中
      label.setBackground(Color.red);----选中设置背景色为红
      }else{
      label.setBackground(Color.white);----否则显示默认颜色白色。
      }
      return label;
      }
      

  4.   

    这位大哥,这些我也能看的懂,他的思想就是用label标签实现,不过我已经自己解决了,谢谢了