我是 Java 中 GUI 编码的新手(使用 swing),并且我陷入了 JTable 缺少列标题并且表格周围没有滚动条的困境。
其外观图像:http://i.gyazo.com/28a66d42bd9365b2c3c9bfd7c8907cee.png
代码:
scrollPane = new JScrollPane();
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
table = new JTable();
table.setFillsViewportHeight(true);
table.setModel(new DefaultTableModel(new Object[][] {
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null },
{ null, null, null, null, null }, }, new String[] {
"New column", "New column", "New column", "New column",
"New column" }));
scrollPane.setColumnHeaderView(table);
最佳答案
只需将 JTable 添加到 JScrollPane 的视口(viewport)作为其 View 即可。最简单的方法是将表传递到 JScrollPane 的构造函数中:
// create JTable, table, first
JScrollPane scrollPane = new JScrollPane(table);
// now add scrollPane to GUI
或者,您可以按照您执行的顺序创建内容,并将 JTable 显式添加到视口(viewport)作为其 View :
scrollPane.setViewportView(table);
例如:
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class Foo2b extends JPanel {
private static final String[] COLUMNS = { "Column One", "Column Two",
"Column Three", "Column Four", "Column Five" };
private static final int ROW_COUNT = 30;
private DefaultTableModel tableModel = new DefaultTableModel(COLUMNS, ROW_COUNT);
private JTable table = new JTable(tableModel);
public Foo2b() {
table.setFillsViewportHeight(true);
setLayout(new BorderLayout());
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
add(scrollPane, BorderLayout.CENTER);
}
private static void createAndShowGui() {
Foo2b mainPanel = new Foo2b();
JFrame frame = new JFrame("Foo2b");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
关于java - 滚动条和表格列不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433091/