如何解决JTable如何去除标题边框
示例:
我有表格标题的问题。如何删除此白色边框或更改它的颜色? 我的代码:
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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。