有人能告诉我如何创建一个没有表头的表格吗?
我正在制作数独谜题,想在Java中创建一个没有表头的表格,这可行吗?
有人能告诉我如何创建一个没有表头的表格吗?
我正在制作数独谜题,想在Java中创建一个没有表头的表格,这可行吗?
table.getTableHeader.setVisible(false)
,但是标题所在的空白灰色区域仍然存在。我知道这是一个旧帖子了,API有变化还是我漏掉了什么? - Masked Coder如果有人遇到了推荐方法无法解决的问题,请尝试以下方法:
jTable.getTableHeader().setUI(null);
这是使用Java 8进行测试的。
看起来,诀窍是首先使用DefaultTableModel构造函数设置标题,然后稍后调用setTableHeader(null)。
这是一些演示代码:
package net.raysforge.visual.demo;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class JTableAndGBC {
private String[] columnNames = {"Source", "Hit", "Last", "Ur_Diff"};
private JTable table;
private Object[][] data = {{"Swing Timer", 2.99, 5, 1.01},
{"Swing Worker", 7.10, 5, 1.010}, {"TableModelListener", 25.05, 5, 1.01}};
private DefaultTableModel model = new DefaultTableModel(data, columnNames);
public JTableAndGBC() {
JPanel panel = new JPanel(new GridBagLayout());
table = new JTable(model);
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1.0;
gbc.fill = GridBagConstraints.HORIZONTAL;
JScrollPane pane = new JScrollPane(table);
table.setPreferredScrollableViewportSize(table.getPreferredSize());
table.setTableHeader(null);
panel.add(pane, gbc);
JFrame frame = new JFrame();
frame.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) throws Exception {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new JTableAndGBC();
}
});
}
}
jTable.setTableHeader(null);
jTable.getTableHeader().setUI(null)在更改外观和感觉(L&F)后将不起作用。
对我有用的方法是重置包装JTable的滚动窗格(在我的情况下分配给变量scrollPaneSummary)的列标题的可见性,如下所示:
scrollPaneSummary = new javax.swing.JScrollPane();
scrollPaneSummary.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_NEVER);
scrollPaneSummary.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPaneSummary.setViewportView( summaryJtable );
scrollPaneSummary.setColumnHeaderView( summaryJtable.getTableHeader());
// make JTable headers invisible
scrollPaneSummary.getColumnHeader().setVisible(false);
scrollPaneSummary.revalidate();