2011-10-03 75 views
0

我有兩個JPanel,我想在另一個JPanel中放置一個JPanel。 「panel_controls」重寫.getPreferredSize()。代碼:Java BoxLayout給出不正確的結果

public final class GUIPanelMain extends JPanel { 
    //... 

    private JPanel panel_images; 
    private JPanel panel_controls; 

    //... 

    private void addPanels() { 
     new BoxLayout(this,BoxLayout.Y_AXIS); //Bleh! Still is horizontal! 
     this.add(panel_images); 
     this.add(panel_controls); 
    } 

    //... 
} 

不幸的是,無論如何佈局是水平設置的。只有當我調整JPanel的大小時,組件纔會進入正確的位置(在這種情況下,垂直方向)。

我讀的文檔中的以下內容:「的BoxLayout嘗試使所有組件一樣寬,最寬的成分列如果失敗,它對齊它們水平,與其X路線。」

什麼失敗的條件,然後呢?我如何強制它垂直對齊?

感謝,

+2

您不應該重寫「panel_controls」的首選大小。如果您正確使用佈局管理器,佈局管理器將確定首選大小。 – camickr

回答

3

嘗試

this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 

你基本上創建的BoxLayout的新實例,最後都用不上和未引用。

+0

您不需要將'this'放在方法調用之前。它不表示任何東西。 –

+0

@SteveKuo OP對其他呼叫有'this'。有時爲了清晰起見,添加了它。 –

+0

+1,如果你沒有專門設置佈局管理器,那麼JPanel將使用FlowLayout。 – camickr