java - gridbaglayout垂直间隙

标签 java user-interface gridbaglayout gaps-in-visuals

我正在制作一个带有一些按钮的面板。 this is what it looks like now.

但我希望按钮相互接触,换句话说,我希望垂直间隙消失。但不应调整按钮的大小。我该如何继续执行此操作?

我的代码:

this.setLayout(new GridBagLayout());
    GridBagConstraints constraints = new GridBagConstraints();

    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.gridwidth = 2;
    constraints.weightx = 1D;
    constraints.weighty = 1D;
    constraints.gridx = 0;
    constraints.gridy = 0;
    int row = 0;
    for (MainAction actie : mainActions) {
        constraints.gridy = row;
        row++;
        SelectedActionButton but = new SelectedActionButton(selectedActionModel, actie);
        this.add(but, constraints);

    }
    constraints.gridwidth = 1;
    constraints.weightx = 0.5D;
    row *=2;
    for (AbstractAction actie : objectActions) {
        constraints.gridy = row/2;
        constraints.gridx = row%2;
        row++;
        SelectedObjectButton but = new SelectedObjectButton(selectedObjectModel, actie);
        but.setMargin(new Insets(0, 0, 0, 0));
        this.add(but, constraints);
    }

提前致谢

最佳答案

更改以下行

constraints.weighty = 1D;

constraints.weighty = 0D;

将解决您的问题。

更新:要将所有按钮向北对齐,您可以在最后一行添加一个额外的组件,占用所有可用空间:

constraints.weighty = 1D;
constraints.gridy = row;
this.add(Box.createGlue(), constraints);

关于java - gridbaglayout垂直间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603858/

相关文章:

java - 使用 JToggleButton 而不触发它。

java - 通过相对路径将文件读入编译好的jar中

java - 如何使用模拟器或 USB 连接设备(例如 Android Studio)使用 Android 应用程序将文件写入桌面?

java - 不显示对象的动态 JPanel

java - 如何以编程方式报告 AWT/Swing 事件队列长度?

java - 如何在 Java 中创建带有连接按钮的 ButtonGroup?

java - 将一个数组的内容传输到另一个数组

asp.net-mvc - 使用ASP.NET MVC时,如何有效地使用Visual Studio中的 "Add view"对话框?

java - 关于在 Java 中使用 GridBagLayout

java - mvc 和 GridBagLayout 中的 ActionPerformed 和 update(Model,Object)