Премахване на линиите на мрежата от таблица в Java, но оставяне на цял ред със същия цвят

Използвал съм TableCellRenderers на таблица, за да пребоядисвам клетките, така че всеки алтернативен ред в таблица да е с различен цвят, но когато използвам setShowGrid(false);, той премахва линиите на мрежата, но позволява цветът на фона на таблицата да се показва през мястото, където се използват линиите на мрежата да бъде, а не цвета на клетките в този ред.

Има ли начин да оцветите тези линии на мрежата? Или имам нужда от по-добър метод за оцветяване на алтернативните редове?


person Jonathan Viccary    schedule 21.06.2012    source източник
comment
Мисля, че това може да помогне stackoverflow .com/questions/8996200/   -  person Calin Andrei    schedule 21.06.2012


Отговори (2)


Премахнахте редовете, но оставихте разстоянието. Премахването на разстоянието трябва да работи.

jTable.setIntercellSpacing(new Dimension(0,0));
person gsjava    schedule 21.06.2012

За да оцветите линиите, просто трябва да зададете цвета на фона на компонента JTable, но ако искате да го потиснете, просто задайте разстоянието между клетките:

  • Потискане: jTable.setIntercellSpacing(ново измерение([разстояния]));
  • Оцветете го: jTable.setBackground([цвят]);

    импортиране на 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);
    }
    
person Francisco Spaeth    schedule 21.06.2012