繁体   English   中英

Jtable setDefaultRenderer消失单元格中的复选框

[英]Jtable setDefaultRenderer disappears checkbox in cell

我在JTable中有一个布尔列,所以我每个单元格都有一个复选框。 当我尝试设置单元格渲染器以更改背景色时,该单元格中的复选框将替换为值(true,false)。

我的单元格渲染器:

class BackgroundTableCellRenderer extends DefaultTableCellRenderer {

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int col) {

        Component c = super.getTableCellRendererComponent(table, value,
                isSelected, hasFocus, row, col); 
        if(row%2 == 0)
        {
            Color bColor = Color.decode("#EFF2ED");
            c.setBackground(bColor);  
        }
        else
            c.setBackground(Color.white);

        return c;
    }
}

我这样设置渲染器:

data_table.setDefaultRenderer(Boolean.class, new BackgroundTableCellRenderer());
  • 使用prepareRenderer进行线条装饰

  • (Xxx)TableCellRenderer您可以尝试

   class BooleanRenderer extends JCheckBox implements TableCellRenderer, UIResource {

        private static final long serialVersionUID = 1L;
        private final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);

        BooleanRenderer() {
            super();
            setHorizontalAlignment(JLabel.CENTER);
            setBorderPainted(true);
        }

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            if (isSelected) {
                setForeground(table.getSelectionForeground());
                super.setBackground(table.getSelectionBackground());
            } else {
                setForeground(table.getForeground());
                setBackground(table.getBackground());
            }
            setSelected(value != null && ((Boolean) value).booleanValue());
            if (hasFocus) {
                setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
            } else {
                setBorder(noFocusBorder);
            }
            return this;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM