问题描述
示例:
我有表格标题的问题。如何删除此白色边框或更改它的颜色? 我的代码:
jtableheader header = table.getTableHeader();
header.setBackground(new Color(21,25,28));
header.setForeground(new Color(255,117,0));
header.setPreferredSize(new Dimension(10,30));
header.setBorder(new LineBorder(new Color(21,28),2));
解决方法
你就快到了...
对于标题,您可以:
final DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setBorder(null);
header.setDefaultRenderer(renderer);
如果您还想从数据单元格中删除边框(实际上是删除网格),请调用:
table.setShowGrid(false);
这是一个没有任何边框的 JTable
的组装示例(除非用户选择一个单元格,然后会在它周围临时出现一个边框):
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"}
},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);
}
}