Java JTable 标头未显示
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19065970/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
JTable header not showing
提问by PhantomKid
JTable header not showing...
JTable 标头未显示...
My JTable header wont show even if add it into a container like JScrollPane...tell me why is it happen and how can i fix it or debug it.. I search through internet and all they saying is add container to your jtable, i did but still my header are not showing.
即使将它添加到 JScrollPane 之类的容器中,我的 JTable 标头也不会显示...告诉我为什么会发生这种情况,我该如何修复或调试它...我通过互联网搜索,他们所说的只是将容器添加到您的 jtable,我做了,但我的标题仍然没有显示。
public void table(){
try{
rs = stat.executeQuery("SELECT * FROM payments;");
Vector<String> header = new Vector<String>();
header.add("PAYMENT");
header.add("AMOUNT");
header.add("MODIFIER");
header.add("DATE MODIFIED");
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
while(rs.next()) {
Vector<Object> row = new Vector<Object>();
row.add(rs.getString("description"));
row.add(rs.getString("amount"));
row.add(rs.getString("remarks"));
row.add(rs.getString("date"));
data.add(row);
} // loop
table = new JTable(data, header);
JScrollPane scrollPane = new JScrollPane(table);
panel.add(table);
panel.add(table.getTableHeader());
//panel.removeAll();
//scroll.add(table);
validate();
}catch(Exception e){
System.out.println("Error in table: "+e);
}//try and catch
}
采纳答案by MadProgrammer
Start by removing
从删除开始
panel.add(table.getTableHeader());
The JTable
is designed to add it's header to the JScrollPane
. An instance of a component can only belong to a one parent/container, the above line is removing it from the scrollpane
该JTable
设计以增加它的头就可以了JScrollPane
。一个组件的实例只能属于一个父/容器,上面的行是从滚动窗格中删除它
Also, change this...
还有,改这个...
panel.add(table);
To
到
panel.add(scrollPane);
回答by Kundan
Same problem I have face You have to add the JTable to the JScrollPane then add JscrollPane to JFrame e.g.
我遇到了同样的问题你必须将 JTable 添加到 JScrollPane 然后将 JscrollPane 添加到 JFrame 例如
JTable table = new JTable();
JScrollPane scrollPane= new JScrollPane(table);
frame.add(scrollPane);
回答by Vikash Singh
Best JTable Example (Working smoothly just paste in editor and execute as Java application) with dynamic data :
具有动态数据的最佳 JTable 示例(工作顺利,只需粘贴到编辑器中并作为 Java 应用程序执行):
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TableTest {
private JFrame frame;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TableTest window = new TableTest();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public TableTest() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
table = new JTable();
DefaultTableModel daDefaultTableModel = new DefaultTableModel(0, 0);
String[] columnNames = new String[] {"Column Header1", "Column Header2", "Column Header3"};
daDefaultTableModel.setColumnIdentifiers(columnNames);
//Dummy data for Table
daDefaultTableModel.addRow(new Object[] {"Test1","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test2","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test3","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test4","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test5","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test6","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test7","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test8","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test9","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test10","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test11","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test12","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test13","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test14","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test15","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test16","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test17","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test18","Test2","Test3"});
daDefaultTableModel.addRow(new Object[] {"Test19","Test2","Test3"});
table.setModel(daDefaultTableModel);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(10, 38, 414, 212);
frame.getContentPane().add(scrollPane);
}
}