Estoy tratando de ocultar las líneas de cuadrícula de una JTable pero sin resultados. Incluso intentar cambiar el color de las líneas de la cuadrícula no funciona. Aquí está mi código:Cómo ocultar líneas de cuadrícula en JTable
// build the table
tableView = new JTable(ttm);
//Specifify the selection Listener and model
listSelectionModel = tableView.getSelectionModel();
listSelectionModel.addListSelectionListener(new SharedListSelectionHandler(tableView));
tableView.setSelectionModel(listSelectionModel);
//Add a mouse listener to our table and implement double click event
tableView.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
//If double click in a message show the Message Details window
if (e.getClickCount() == 2){
showMessageDetail();
}
}
});
// set my own renderer
CustomCellRenderer mtr = new CustomCellRenderer();
tableView.setDefaultRenderer(Object.class, mtr);
// table properties
tableView.setGridColor(Color.black);
tableView.setShowGrid(false);
//tableView.setShowVerticalLines(false);
//tableView.setShowHorizontalLines(false);
tableView.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//hide header
tableView.setTableHeader(null);
// hide the id column
String columName = tableView.getColumnName(TableModel.COLUMN_ID);
tableView.getColumn(columName).setMaxWidth(0);
tableView.getColumn(columName).setMinWidth(0);
tableView.getColumn(columName).setWidth(0);
//load the messages in the table
loadMessages();
//adjust column width
tableView = autoResizeColWidth(tableView, ttm);
public class CustomCellRenderer extends JPanel implements TableCellRenderer {
/**
* First gradient color
*/
private static final Color COLOR_1 = new Color(255, 255, 255, 200);
/**
* Second gradient color
*/
private static final Color COLOR_2 = new Color(255, 0, 255, 200);
/**
* Controls gradient direction
*/
private static final float SIDE = 50;
private GradientPaint gradientPaint = new GradientPaint(0, 0, COLOR_1, SIDE, SIDE, COLOR_2, true);
private JLabel label = new JLabel();
public CustomCellRenderer() {
setOpaque(true);
setLayout(new BorderLayout());
add(label, BorderLayout.CENTER);
label.setHorizontalAlignment(SwingConstants.CENTER);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
label.setText(value.toString());
return this;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(gradientPaint);
g2.fillRect(0, 0, getWidth(), getHeight());
}
}
Las líneas de cuadrícula blancas siempre se están dibujando. Estoy atascado aquí ...
¿Debo implementar una ventana gráfica personalizada para deshacerme de esto?
Gracias de antemano, Alex
Eso es extraño. 'JTable.setShowGrid (false)' funciona para mí con un 'TableCellRenderer' personalizado. Publicar un código más relevante puede ser beneficioso, o mejor aún, publicar un [SSCCE] (http://www.sscce.org). – Jeffrey
'Estoy usando un CellRenderer personalizado, no sé si esto podría estar causando el problema. Bueno, eso es bastante fácil de entender. Pruebe su código sin el renderizador personalizado. – camickr
@camickr Intenté eso, no funcionó. – AlejandroVK