代码之家  ›  专栏  ›  技术社区  ›  harshit

删除jtable中的单元格边框

  •  20
  • harshit  · 技术社区  · 16 年前

    我有自己的自定义单元格渲染器,希望删除单元格的边框。
    我该怎么做?我试过Setborder,但不起作用。

    这是我的渲染器代码:

    public class MyTableCellRenderer extends DefaultTableCellRenderer {
    
        private static final long serialVersionUID = -1195682136616306875L;
    
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column) {
            Component c = super.getTableCellRendererComponent(table, value,
                    isSelected, hasFocus, row, column);
            if (!isSelected) {
                if (row % 2 == 0 && row != 1) {
                    c.setBackground(new Color(255, 255, 150));
                } else {
                    c.setBackground(Color.WHITE);
                }
            } else {
                c.setBackground(new Color(255, 230, 255));
            }
            c.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
            return c;
        }
    }
    
    2 回复  |  直到 11 年前
        1
  •  50
  •   Devon_C_Miller    13 年前

    单元格之间绘制的线条不是单元格本身的一部分。它们是由桌子画的。您可以通过以下方式关闭整个表的电源:

    table.setShowGrid(false);
    

    要仅禁用水平线或垂直线:

    table.setShowHorizontalLines(false);
    table.setShowVerticalLines(false);
    

    或者,可以使用以下选项更改线条的颜色:

    table.setGridColor(color)
    
        2
  •  2
  •   camickr    16 年前

    我不知道代码是如何编译的,因为只有Swing组件才能有边框,而组件类没有setborder()方法。

    当我覆盖默认渲染器时,我使用如下内容:

    Class CustomRenderer extends DefaultTableCellRenderer
    {
        public Component getTableCellRendererComponent(
            JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
        {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            this.setBorder (BorderFactory.createBevelBorder (EtchedBorder.RAISED));
            return this;
        }
    }