Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中删除表格中的网格线,但保留整行相同的颜色_Java_Colors_Gridlines - Fatal编程技术网

在Java中删除表格中的网格线,但保留整行相同的颜色

在Java中删除表格中的网格线,但保留整行相同的颜色,java,colors,gridlines,Java,Colors,Gridlines,我在表格上使用了tableCellRenders来重新绘制单元格,以便表格中的每一行都是不同的颜色,但是,当我使用setShowGrid(false)时它删除网格线,但允许表格的背景色显示网格线过去所在的位置,而不是该行中单元格的颜色 有没有办法给这些网格线上色?或者我需要一种更好的方法来为交替行着色吗?您删除了行,但保留了间距。删除间距应该有效 jTable.setIntercellSpacing(new Dimension(0,0)); 为了给线上色,只需设置JTable组件的背景色,但如

我在表格上使用了
tableCellRenders
来重新绘制单元格,以便表格中的每一行都是不同的颜色,但是,当我使用
setShowGrid(false)时它删除网格线,但允许表格的背景色显示网格线过去所在的位置,而不是该行中单元格的颜色


有没有办法给这些网格线上色?或者我需要一种更好的方法来为交替行着色吗?

您删除了行,但保留了间距。删除间距应该有效

jTable.setIntercellSpacing(new Dimension(0,0));

为了给线上色,只需设置JTable组件的背景色,但如果要抑制它,只需设置单元间间距:

  • 抑制:jTable.setIntercellSpacing(新维度([spacings])
  • 给它上色:jTable.setBackground([Color])

    导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.Component; 导入java.awt.Dimension

    导入javax.swing.JFrame; 导入javax.swing.JTable; 导入javax.swing.table.DefaultTableModel; 导入javax.swing.table.TableCellRenderer

    公共类TestJFrame{

    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        JTable jTable = new JTable();
    
        jTable.setModel(new DefaultTableModel(new String[][] { new String[] {"col1", "col2"}, new String[] {"col1", "col2"}, new String[] {"col1", "col2"}}, new String[] {"colHeader1", "colHeader2"}));
    
        final TableCellRenderer defaultRenderer = jTable.getDefaultRenderer(Object.class);
    
        jTable.setDefaultRenderer(Object.class, new TableCellRenderer() {
    
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                Component result = defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    
                if(!isSelected) {
                    if (row%2 == 0) {
                        result.setBackground(Color.GRAY);
                    } else {
                        result.setBackground(Color.DARK_GRAY);
                    }
                }
    
                return result;
            }
        });
    
        jTable.setBackground(Color.RED);
        jTable.setShowGrid(false);
        //jTable.setIntercellSpacing(new Dimension(0, 0));
    
        jFrame.setLayout(new BorderLayout());
        jFrame.add(jTable.getTableHeader(), BorderLayout.NORTH);
        jFrame.add(jTable, BorderLayout.CENTER);
    
        jFrame.pack();
        jFrame.setVisible(true);
    }
    
我认为这可能会有所帮助