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