我添加了一些JPanel
设置为网格布局的组件,我正在添加JFrame
设置为边框布局的组件。但我想修复面板的大小。当我的窗口最大化时,所有组件的大小都在增加。我希望面板位于窗口的中心,即使窗口最大化也具有固定大小。
问问题
9883 次
3 回答
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 回答