当前位置:编程学习 > JAVA >>

JTable中CheckBox单元格背景色渲染

混迹Java很多年,然而在碰到JTABLE操作的时候,还是有点望而生畏。
这次在项目中,碰到对CheckBox单元格进行背景色渲染,着实让我煞费
了一番心思。以下是解决方法,与需要的同学共享。
[java]  
 for (int i = 0; i < table.getColumnCount(); i++) {  
     // 第十二列是预警标志位,用CheckBox控件显示  
     if (i == 11) {  
          table.getColumn(table.getModel().getColumnName(i)).setCellRenderer(  
                        new TableCellRenderer() {  
                    private JCheckBox checkBox = new JCheckBox();  
  
                    @Override  
                    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {  
                        if (value != null) {  
                            checkBox.setSelected(Boolean.valueOf(value.toString()));  
                            checkBox.setHorizontalAlignment(JCheckBox.CENTER);  
                            if (isSelected) {  
                                // 默认选中颜色  
                                checkBox.setBackground(new Color(10, 36, 106));  
                            } else {  
                                String warn_Flag = (String) table.getModel().getValueAt(row, 13);  
                                if ("1".equals(warn_Flag)) {  
                                    checkBox.setBackground(Color.RED);  
                                } else {  
                                    checkBox.setBackground(Color.white);  
                                }  
                            }  
                        }  
                        return checkBox;  
                    }  
                });  
            } else {  
                table.getColumn(table.getModel().getColumnName(i)).setCellRenderer(  
                        new DefaultTableCellRenderer() {  
            @Override  
            public Component getTableCellRendererComponent(JTable table,  
                    Object value, boolean isSelected, boolean hasFocus,  
                    int row, int column) {  
                String warn_Flag = (String) table.getModel().getValueAt(row, 13);  
                if ("1".equals(warn_Flag)) {  
                    setBackground(Color.RED);  
                } else {  
                    setBackground(Color.white);  
                }  
  
                return super.getTableCellRendererComponent(table, value,  
                        isSelected, hasFocus, row, column);  
            });  
<span style="white-space:pre">  </span>}}  
 
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,