BorderLayout center命令不会居中

我试图将两个JButtons彼此相邻放置在的中心,JFrame当改变大小时,它们不会改变按钮JFrame的大小。

为此,我将两个按钮放在带有a的面板中,FlowLayout然后将其放在带有中心的面板中BorderLayout

但是,以下代码不会在的中心显示所选面板BorderLayout

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class test extends JFrame {

private JPanel panel1 = new JPanel();

private JPanel panel2 = new JPanel();

private JButton button1 = new JButton("one");

private JButton button2 = new JButton("two");

public test() {

panel1.setLayout(new FlowLayout());

panel1.add(button1);

panel1.add(button2);

panel2.setLayout(new BorderLayout());

panel2.add(panel1, BorderLayout.CENTER);

this.add(panel2);

}

public static void main(String[] args) {

test frame = new test();

frame.setVisible(true);

frame.setSize(400, 400);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

回答:

设置GridBagLayoutpanel1

 panel1.setLayout(new GridBagLayout());

编辑:

@trashgod:我必须弄清楚默认约束是如何做到的。

由于存在GridBagLayout.defaultConstraints字段:

此字段包含包含默认值的Gridbag约束实例,因此,如果组件没有与其关联的Gridbag约束,则将为该组件分配defaultConstraints的副本。

在通常的实践中,必须创建GridBagConstraints对象并设置字段以指定对每个对象的 约束

引用本教程:

设置组件约束的首选方法是使用Container.add变量,并向其传递GridBagConstraints对象

以上是 BorderLayout center命令不会居中 的全部内容, 来源链接: utcz.com/qa/407217.html

回到顶部