0

この形式のコードを持っていますが、jpanelは設定したサイズをリッスンしていません。コードを実行すると、3つのパネルはすべて同じサイズになります。それらを調整する方法はありますか?

JPanel mainpanel = new JPanel(mainPanel,BoxLayout.Y_AXIS);
JPanel tablepanel1 = new JPanel();
tablepanel1.setSize(900,400);
JPanel selectionpanel = new JPanel(new GridBagLayout());
selectionpanel.setSize(900,100);
JPanel tablepanel2 = new JPanel();
tablepanel2.setSize(900,400);

mainpanel.add(tablepanel1);
mainpanel.add(selectionpanel);
mainpanel.add(tablepanel2);

frame.add(mainpanel);
frame.setSize(900,900);
4

1 に答える 1

1

使用するつもりでしBoxLayoutmainpanelか?:

JPanel mainpanel = new JPanel();
mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS));

このレイアウトマネージャーは、コンポーネントサイズではなく、優先サイズのみをリッスンします。最良の方法はオーバーライドすることgetPreferredSizeです:

JPanel selectionpanel = new JPanel() {
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(900, 400);
    }
};

またJFrame#pack、フレームの寸法を設定するよりも使用する方が適切です。

于 2013-02-27T12:55:00.993 に答える