2013-02-15 90 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