2013-10-19 49 views
0

我想創建一個帶有表格的面板,該表格填充了整個可用空間。如何讓一個JTable填充整個可用空間?

我做到這一點使用下面的代碼:

public class MyFrame extends JFrame { 
    public EconomyFrame() throws HeadlessException { 
     super("..."); 

     final JTabbedPane tabbedPane = new JTabbedPane(); 

     add(tabbedPane); 

     final JPanel companiesPanel = new JPanel(); 

     final CompaniesTableModel companiesModel = new CompaniesTableModel 
       (ApplicationStateSingleton.INSTANCE.getPersistence().getCompanies()); 

     final JTable companiesTable = new JTable(companiesModel); 

     ApplicationStateSingleton.INSTANCE.getEventBus().subscribeToPropertyChanges(companiesModel); 

     companiesPanel.add(new JScrollPane(companiesTable)); 

     tabbedPane.addTab("Companies", companiesPanel); 
    } 
} 

但它不工作,因爲當我調整框架,該表僅填充可用空間的一部分(見下截圖)。

我該如何修復(使表格填充整個可用空間)?

Screenshot 1

Screenshot 2

+1

你的代碼沒有編譯,構造函數需要匹配類名。幫助那些通過發佈[SSCCE](http://sscce.org/)回覆的人 – Reimeus

回答

6

使用佈局管理器,允許JTable佔據整個地區提供,而不是由JPanel使用的默認FlowLayout只使用其組件首選大小

JPanel companiesPanel = new JPanel(new GridLayout()); 
5

有有兩個問題:

1)首先,您需要使用合適的佈局管理器來確保滾動窗格可以調整大小以填充可用區域。通常人們會將滾動窗格添加到BorderLayout的中心。 2)您需要讓表格填充滾動窗格的視口中的可用空間。要做到這一點你使用:

table.setFillsViewportHeight(true); 
相關問題