2017-04-21 64 views
0

我知道JTable通常放在JScrollPane中,但我不想滚动,我希望在添加一行时增长表。 我已经使用NetBeans IDE 8.2创建了一个swing应用程序,它几乎可以完成我想要的操作,并将其放入JPanels,数据和标题放在单独的面板中。我的JTable根本没有显示

我试图去基础和手工制作我需要的代码,但它根本不显示表格。

public NewJFrame1() { 
    initComponents(); 
    JTable table = new JTable(); 
    DefaultTableModel tableModel = new DefaultTableModel(); 
    tableModel.addColumn("Type"); 
    tableModel.addColumn("Folder"); 
    String[] row = {"Datum1","Datum2"}; 
    table.setModel(tableModel); 
    tableModel.addRow(row); 
    this.getContentPane().add(table.getTableHeader()); 
    this.getContentPane().add(table); 
} 
+1

应该在JScrollPane中显示一个表格,以便正确显示标题和数据。阅读JTable API,您将在“如何使用表格”的Swing教程中找到指向使用表格基础知识的链接。 – camickr

+0

^---他说的[如何使用表格](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) 和[如何使用滚动窗格](http:/ /docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html) – MadProgrammer

+0

'initComponents'表明您使用Netbeans表单编辑器,您可能会发现这会干扰您尝试动态修改UI并且你最好不要使用它(表单编辑器) – MadProgrammer

回答

1

我认为你应该模型所以从我所看到的,使用的是NetBeans和创建的JFrame设置表

table.setModel(tableModel); //add this to your code 

好。如果你是从设计将你的表不是有没有必要为你的constructor.Just简单地创建另一个表:

public NewJFrame() { 
    initComponents(); 
    DefaultTableModel tableModel = new DefaultTableModel(); 
    tableModel.addColumn("Type"); 
    tableModel.addColumn("Folder"); 
    String[] row = {"Datum1","Datum2"}; 
    tableModel.addRow(row); 
    jTable1.setModel(tableModel);// where jTable1 has been created and instantiated automatically by netbeans when you draged and dropt it to your frame , from the design. 
} 
+0

是的,对不起,我创建了一个减少版本来演示问题并错过了!它仍然不显示与他们连接。 – Denizen

+0

检查我的编辑 –

+0

谢谢@Radu Soigan – Denizen

0

拉杜Soigan是正确时,JTable和TableModel的是它必须是单独的对象使用setModel(tableModel)方法链接在一起,因为表格不知道要显示的数据在哪里。对于自定义表模型,这也是一样的,记得在设置模型后记得将它设置为JTable。