2012-06-21 3 views
0

setShowGrid(false);을 사용하면 표의 모든 대체 행이 다른 색이되도록 표에 TableCellRenderers을 사용하여 표 셀을 다시 칠했습니다. 표 셀의 색상이 아닌 표 셀의 배경색을 표시 할 수 있습니다.Java에서 테이블에서 눈금 선을 제거하지만 전체 행을 동일한 색으로 유지

이러한 그리드 선을 색상 표시하는 방법이 있습니까? 아니면 대체 행을 채색하는 더 나은 방법이 필요합니까?

+0

나는이 http://stackoverflow.com/questions/8996200/how-to-hide-grid-lines-in-jtable 도움이 될 것이라고 생각 –

답변

1

선을 제거했지만 간격을 유지했습니다. 간격을 제거하면 효과가 있습니다.

jTable.setIntercellSpacing(new Dimension(0,0)); 
그냥 JTable의 구성 요소의 배경색을 설정하는 데 필요한 라인 색상하기 위해
0

,하지만 당신은 억제 할 경우는 셀간 간격 설정 :

  • 억제 : jTable.setIntercellSpacing를 (새로운 치수 ([spacing]));
  • 색상 : jTable.setBackground ([color]);

    import java.awt.BorderLayout; 가져 오기 java.awt.Color; 가져 오기 java.awt.Component; import java.awt.Dimension;

    import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import 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); 
    }