2013-02-15 89 views
6

我有一张表,当用户提示我这样做时,我想填充该表。问题是,我无法预测表格最终会有多少行。在构造我的面板,该表将显示我有向JScrollPane动态添加JTable

// add empty scrollPane to JPanel which will later hold table 
       scrollPane = new JScrollPane(); 
    add(scrollPane); 

这个类包含了时,我想终于显示表

public void displayTable(String[] columnNames, String[][] dataValues) 
{ 
    table = new JTable(dataValues, columnNames); 
    table.setPreferredScrollableViewportSize(new Dimension(300, 80)); 
    table.setFillsViewportHeight(true); 
    scrollPane.add(table); 

    this.setVisible(true); 
    scrollPane.repaint(); 

} 

问题是,会被调用,表方法从不显示。我只看到ScrollPane没有内部表格的轮廓。为什么表格不显示,我该如何解决?

+0

为了更快提供更好的帮助,请包括[SSCCE](http://sscce.org)。 – mre 2013-02-15 17:26:20

+0

我认为这很简短并且重要。我的问题不清楚吗? – Matt 2013-02-15 17:29:36

+0

Swing有很多细微之处。你给我们的信息越多,我们就越容易帮助你。否则,我们都在黑暗中开枪,尽管有时候我们很幸运。 – mre 2013-02-15 17:30:54

回答

15

您应该添加组件不要JScrollPane中,但其对应的JViewport:

scrollPane.getViewport().add (table); 
+0

就是这样。谢谢! – Matt 2013-02-15 17:30:35

+1

另外你可以使用'JViewport.setView(Component)',但它会做同样的事情。 – MadProgrammer 2013-02-15 19:51:26

+0

这就像魅力。我正在做的是scrollPane.add(表),这解决了它。 – yuva 2014-11-20 10:45:42

5

而不是添加表JScrollPane的滚动窗格创建的视口,然后将其作为表视图。 使用下面的代码来代替:
scrollPane.setViewportView(table)

2

一般情况下,在创建JTableJScrollPane在一起,即使你没有价值呢。

对于动态表,最好使用DefaultTableModelTableModel

+0

+1正确的方法和正确的答案, – mKorbel 2013-02-15 22:48:04