我尝试创建一个包含列名“User”和测试数据“data”的 JTable
,但列名不会被打印。
String [] [] data = {{"hallo","hallo","","","",""},
{"hallo","hallo","","","",""}};
String [] User = {"ID","Benutzername", "Name", "Vorname", "Geburtsdatum", "Wirt"};
tableUsers = new JTable(data,User);
tableUsers.setPreferredScrollableViewportSize(new Dimension(500,50));
tableUsers.setFillsViewportHeight(true);
//add(new JScrollPane(tableUsers));
JTableHeader header = tableUsers.getTableHeader();
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(header, BorderLayout.NORTH);
panel.add(tableUsers, BorderLayout.CENTER);
JScrollPane scrollPane = new JScrollPane(tableUsers);
add(scrollPane);
tableUsers.setBounds(29, 245, 580, 136);
contentPane.add(tableUsers);
最佳答案
将表添加到 JPanel 面板,然后将面板添加到滚动 Pane 。所以,现在您的滚动 Pane 包含您的表格。现在,您需要将滚动 Pane 添加到内容 Pane 。您不应该将 tableUsers 添加到多个项目。
编辑:我添加了我用来运行和测试的整个代码,因为我认为您遇到了单独的问题。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;
public class Test {
/**
* Do this for thread safety
* @param args
*/
public static void main (String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGUI();
}
});
}
/**
* create the JFrame
*/
private static void createGUI() {
JFrame jf = new JFrame();
addComponents(jf.getContentPane());
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.pack();
}
/**
* add the components
* @param pane
*/
private static void addComponents(Container pane) {
String [] [] data = {{"hallo","hallo","","","",""}, {"hallo","hallo","","","",""}};
String [] User = {"ID","Benutzername", "Name", "Vorname", "Geburtsdatum", "Wirt"};
JTable tableUsers = new JTable(data,User);
tableUsers.setPreferredScrollableViewportSize(new Dimension(500,50));
tableUsers.setFillsViewportHeight(true);
//add(new JScrollPane(tableUsers));
JTableHeader header = tableUsers.getTableHeader();
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(header, BorderLayout.NORTH);
panel.add(tableUsers, BorderLayout.CENTER);
JScrollPane scrollPane = new JScrollPane(panel);
pane.add(scrollPane);
tableUsers.setBounds(29, 245, 580, 136);
//pane.add(tableUsers);
}
}
关于java - JTable 不显示列名 - 使用 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995645/