0

JPanelグリッド レイアウトに設定されたコンポーネントをいくつか追加しましJFrameた。ボーダー レイアウトに設定されたコンポーネントを追加しています。しかし、パネルのサイズを修正したい。ウィンドウを最大化すると、すべてのコンポーネントのサイズが大きくなります。ウィンドウが最大化されていても、ウィンドウの中央固定サイズのパネルが必要です。

4

3 に答える 3

3

パネルをGridLayout単一のコンポーネントとして、GridBagLayout制約なしで に配置します - 中央に配置されます。GBL のパネルを の に追加しCENTERますBorderLayout

上の画像については、この例を参照してください。


ネストされたレイアウトの例では、GBL を使用して、画像を右側のスクロール ペインの下部の中央に配置しています。

于 2012-05-25T06:31:08.970 に答える
1

それでは、BorderLayoutを使用しないでください。これは、子コンポーネントにぴったり収まるためです。それでもJFrameでBoderLayoutを使用する場合は(サイドパネルなどが必要なため)、JPanelを(GridLayoutで)ラップするだけです。 )GridBagLayoutまたはBoxLayoutなどを使用して別のJPanelに入れ、その別のJPanelをJFrameに入れます。

JPanel innerPanel = new JPanel();
innerPanel.setLayout(new GridLayout());
// fill and set your innerPanel

JPanel middlePanel = new JPanel();
middlePanel.setLayout(new GridBagLayout());
middlePanel.add(innerPanel, constraintsThatPlaceItWhereYouWantIt);

JFrame yourFrame = new JFrame();
yourFrame.setLayout(new BorderLayout());
yourFrame.add(middlePanel, BorderLayout.CENTER);
于 2012-05-25T06:36:55.350 に答える
0
    JFrame frame = new JFrame();
    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(new BorderLayout());

    JPanel rootPanel = new JPanel();
    frame.getContentPane().add(rootPanel, BorderLayout.CENTER);
    rootPanel.setLayout(new GridBagLayout());

    JPanel contentPanel = new JPanel();

    Dimension dimension = new Dimension(300, 300);
    contentPanel.setMaximumSize(dimension);
    contentPanel.setMinimumSize(dimension);
    contentPanel.setPreferredSize(dimension);
    contentPanel.setBackground(Color.YELLOW);

    GridBagConstraints g = new GridBagConstraints();
    g.gridx = 0;
    g.gridy = 0;
    g.anchor = GridBagConstraints.CENTER;
    rootPanel.add(contentPanel, g);

    frame.setVisible(true);
于 2012-05-25T06:32:14.633 に答える