Well you were almost there...
For the header you can do:
final DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setBorder(null);
header.setDefaultRenderer(renderer);
If you also want to remove the borders from the data cells also (practically removing the grid), then call:
table.setShowGrid(false);
Here is an assembled example of a JTable
without any borders (except when the user selects a cell, then a border will appear around it temporarily):
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
public class Main {
private static void createAndShowGUI() {
final JFrame frame = new JFrame("Table without borders");
final JTable table = new JTable(new Object[][]{
new Object[]{"user", "user", "user"},
new Object[]{"user", "user", "user"},
new Object[]{"user", "user", "user"},
new Object[]{"user", "user", "user"},
new Object[]{"user", "user", "user"},
new Object[]{"user", "user", "user"}
}, new Object[]{"A", "B", "C"});
JTableHeader header = table.getTableHeader();
final Color dark = new Color(21, 25, 28),
orange = new Color(255, 117, 0);
table.setForeground(orange);
table.setBackground(dark);
header.setBackground(dark);
header.setForeground(orange);
final DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setBorder(null); //Remove border from the renderer (which is just a JLabel)...
//Apply the renderer to all header cells and all data cells:
header.setDefaultRenderer(renderer);
table.setDefaultRenderer(Object.class, renderer);
/*The follwing lines simply remove the border from the cell editor
(ie the component which draws each cell when the user edits its value):*/
//final JTextField editor = new JTextField();
//editor.setBorder(null);
//table.setCellEditor(new DefaultCellEditor(editor));
//header.setBorder(null); //Not needed.
table.setShowGrid(false); //Hide the grid (which is some extra border between cells).
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(final String[] args) {
SwingUtilities.invokeLater(Main::createAndShowGUI);
}
}