GridBagLayout中的Make Component占用相同的宽度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GridBagLayout中的Make Component占用相同的宽度相关的知识,希望对你有一定的参考价值。

如何在GridBagLayout中制作组件占用相同的宽度?我试过GridBagConstraint.weightx,但它不起作用。

static void test3() {
    JFrame f = new JFrame("Test");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(480, 360);
    Container pane = f.getContentPane();
    pane.setLayout(new GridBagLayout());

    String[] a = {
            "Lorem ipsum dolor sit amet",
            "consectetur adipisicing",
            "elit, ",
            "sed do",
            "eiusmod",
    };
    for (int i = 0; i < 5; i++) {
        GridBagConstraints c = new GridBagConstraints();
        c.gridx = i % 3;
        c.gridy = i / 3;
        c.weightx = 0.5;
        c.fill = GridBagConstraints.HORIZONTAL;
        f.add(new JButton(a[i]), c);
    }
    f.setVisible(true);
}
答案
 static void test3() {
    JFrame f = new JFrame("Test");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(800, 360);
    Container pane = f.getContentPane();
    pane.setLayout(new GridBagLayout());

    String[] a = {
            "Lorem ipsum dolor sit amet",
            "consectetur adipisicing",
            "elit,",
            "sed do",
            "eiusmod",
    };
    for (int i = 0; i < 5; i++) {
        JButton test=new JButton(a[i]);
        GridBagConstraints c = new GridBagConstraints();
        c.gridx = i %3;
        c.gridy = i /3;
        c.fill = GridBagConstraints.HORIZONTAL;
        test.setPreferredSize(new Dimension(250,25));
        f.add(test, c);
    }
    f.setVisible(true);
}

您需要为按钮设置首选大小。这会给你想要的结果

另一答案

使用GridLayout作为视图的该部分。它将使按钮大小相同,并为最高的组件分配所需的高度,以及最宽的所需宽度。

我试过GridBagConstraint.weightx,但它不起作用。

weightx约束更多地与GUI调整大小时如何分配额外宽度或高度有关,但单元格将以该行/列所需的最小高度/宽度开始。

以上是关于GridBagLayout中的Make Component占用相同的宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何使组件跨越 GridBagLayout 中的多个单元格

GridBagLayout布局

使用GridBagLayout控制行列的高度和宽度

java中的GridBagLayout是怎么调组件间距的...

将JScrollPane添加到GridBagLayout

如何在 GridBagLayout 中调整 JPanel 的大小?