2012-02-24 34 views
0

我在JFrame內部有JPanel(但它們大小不一,JFrame是全屏)。 JPanel有一個FlowLayout,因爲我動態添加了小方塊(JPanels)。這個方塊排列得很好(他們移動到JPanel結束時的下一行),直到我調整JFrame的大小 - 然後這些方塊被顯示在一行中,什麼使它們的一部分不可見(它們在屏幕結束時消失)以及JPanel調整大小。我能做些什麼來保持JPanel的永久大小? JFrame的LayoutManager是MigLayout。帶有FlowLayout的JPanel自己調整大小

回答

2

一種可能的解決方案:覆蓋其getPreferredSize()方法以返回一個常量Dimension。

public class MyPanel extends JPanel { 
    private static final int PANEL_W = 400; 
    private static final int PANEL_H = 300; 

    public MyPanel() { 
     // ... etc... 
    } 


    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(PANEL_W, PANEL_H); 
    } 

    // ... etc... 
} 
+0

問題是,我無法從預先定義寬度和高度,因爲我使JPanel不斷增長,要採用所有可能的位置來適應屏幕(因此尺寸取決於屏幕的大小)。更具體地說,我的JFrame分爲兩列(根據MigLayout):第一個是永久大小,第二個是剩下所有空間。 – user1091733 2012-02-25 00:06:43

+0

此外,此代碼不起作用。即使我定義了JPanel的大小,當我調整窗口大小或在JFrame上調用validate()函數時,它也會發生變化。 – user1091733 2012-02-25 09:55:38