java - 使用 Grid Bag Layout 调整按钮大小

标签 java jbutton layout-manager japplet gridbaglayout

我想将我的按钮调整为相同大小,然后放置在 JApplet 的面板中。我试过使用

public void init() {
    // TODO start asynchronous download of heavy resources

    JButton btnWestern=new JButton("Western");
    JButton btnPop=new JButton("Pop");

    GridBagConstraints c4=new GridBagConstraints();

    JPanel jPanel1 = new JPanel();
    getContentPane().setLayout(new java.awt.GridBagLayout());
    jPanel1.setLayout(new java.awt.GridBagLayout());

    c4.gridx = 0;
    c4.gridy = 0;
    c4.insets = new Insets(36, 10, 0, 249);
    jPanel1.add(btnWestern, c4);

    c4.gridx = 0;
    c4.gridy = 1;
    c4.insets = new Insets(33, 10, 0, 249);
    jPanel1.add(btnPop, c4);

    add(jPanel1, new java.awt.GridBagConstraints());

    }

当我运行时,这就是我得到的

enter image description here

但我注意到,如果我将按钮文本更改为相同或具有相同的长度,例如

JButton btnWestern=new JButton("Button1");
JButton btnPop=new JButton("Button2");

我得到了想要的输出

enter image description here

我该怎么做才能确保即使按钮的文本长度不同,按钮的大小也相同?

最佳答案

我建议通读 How to Use GridBagLayout教程,如果你还没有。 GridBagLayout 功能强大,但它也是可用的更复杂的 LayoutManager 之一。

我相信您需要设置 GridBagConstraints.fill 属性以获得您想要的行为。

在你的情况下,这应该是这样的

c4.fill = GridBagConstraints.HORIZONTAL;

编辑(对观察到的行为的一些解释)当您在两个按钮上使用相同的文本时,它们的计算大小最终会相同,因此它们会按您想要的方式呈现。当您使用不同大小的文本时,默认情况下按钮将以适合文本的大小呈现。 GridBagConstraints.fill 的默认值是 GridBagConstraints.NONE,它指示 LayoutManger 不调整组件的大小。将填充更改为 GridBagConstraints.HORIZONTAL 告诉 LayoutManger 水平调整组件的大小以填充显示区域。

关于java - 使用 Grid Bag Layout 调整按钮大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19569884/

相关文章:

java - 如何判断按钮数组中的哪个按钮被单击?

java - 将 JList/JScrollPane 添加到 JPanel

java - 为 JButton 添加全局键绑定(bind)?

java - ActionListener 中预期的标识符

java - 在 Netbeans 中使用 CardLayout

Java 布局管理器

java - Android:互联网在模拟器中有效,但在我的手机上无效

javascript - 在同一html页面中显示servlet响应而不隐藏表单

Java - 如何遍历 3 维 ArrayList?

java - 在 ListView 元素内绘制到 Canvas