java - 当我在 Java 中使用 GridBagLayout 时,按钮没有填充所有可用空间

标签 java swing button layout-manager gridbaglayout

我想创建一个应用程序,其按钮排列在不可见的表格中。即使我调整框架大小,按钮也应该填充假想单元格内的所有可用空间。我正在使用 Swing、GridBagLayout。我读过一些文章,解决方案是添加 .weightx=1.weighty=1Weightx 工作完美,它填补了空白,但 Weighty 却没有。按钮不会延伸到单元格的高度。我的代码有问题吗?或者需要添加一些内容来解决我的问题?或者我应该使用另一种布局?

public class NewClass {
  public void NewClass(){
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    frame.add(panel);
    GridBagLayout layout = new GridBagLayout();
    panel.setLayout(layout);
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.weightx = 1.0;
    gbc.weighty = 1.0;

    gbc.gridx = 0;
    gbc.gridy = 0;
    JButton B11 = new JButton("11");
    panel.add(B11,gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    JButton B12 = new JButton("12");
    panel.add(B12,gbc);

    gbc.gridx = 0;
    gbc.gridy = 1;
    JButton B21 = new JButton("21");
    panel.add(B21,gbc);

    gbc.gridx = 1;
    gbc.gridy = 1;
    JButton B22 = new JButton("22");
    panel.add(B22,gbc);

    frame.pack();
    frame.setSize(800,400);
    frame.setVisible(true);
}}

最佳答案

您使用了错误的 GridBagConstraints#fill 字段值,因为您使用的值告诉布局管理器仅水平填充按钮。

你需要改变

  gbc.fill = GridBagConstraints.HORIZONTAL;

  // gbc.fill = GridBagConstraints.HORIZONTAL;
  gbc.fill = GridBagConstraints.BOTH;

如果您希望按钮填充两个方向(水平和垂直方向)。

关于java - 当我在 Java 中使用 GridBagLayout 时,按钮没有填充所有可用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26873189/

相关文章:

java - 使用 OWASP ESAPI 时是否需要启用规范化?

java - java.lang.ClassNotFoundException:org.apache.commons.collections.ListUtils在服务器上执行代码时

java - 如何为 Spring Boot 中的所有错误配置/设置重定向?

java - JLayeredPane绘制图片

java - 无法使用来自不同类的 JButton 打开新的 JFrame

java - Android:确定单击了哪个按钮,因为该按钮未在 xml 中定义

html - 一起使用 required 和 readonly 属性

java - 批量重命名PDF文件中的PDF书签/大纲

java - 修改 JList 中两个元素之间的垂直间隙

Facebook Like 按钮在点击后翻转回 'unliked' 状态