java swing jtable border borderless

java - eliminar celdas borde en una tabla



swing jtable (2)

Tengo mi procesador de celdas personalizado y quiero eliminar el borde de la celda.
¿Cómo puedo hacerlo? Intenté setBorder pero no funciona.

Aquí está mi código de renderizador:

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; } }


Las líneas dibujadas entre las celdas no son parte de las celdas en sí. Están dibujados por la mesa. Puedes apagarlos para toda la mesa con:

table.setShowGrid(false);

Para deshabilitar solo las líneas horizontales o verticales:

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

O bien, puede cambiar el color de las líneas con:

table.setGridColor(color)


No sé cómo se compila su código ya que solo los componentes Swing pueden tener un borde y la clase Component no tiene un método setBorder ().

Cuando anulo el renderizador predeterminado, uso algo como:

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; } }