java - 无法使 Java GridBagConstraints 工作

标签 java graphics awt layout-manager gridbaglayout

为此苦苦挣扎了一段时间。我的方法如下所示:

public Frame(){
            JFrame window = new JFrame();
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.setSize(800, 600);

            JPanel panel = new JPanel(new GridBagLayout());

            GridBagConstraints gbc = new GridBagConstraints();
              gbc.gridheight =3;
              gbc.gridwidth = 3;


            JButton upButt = new JButton();//Buttons.upButton();
              gbc.gridx = 1;
              gbc.gridy = 0;
              panel.add(upButt, gbc);

            JButton downButt = new JButton();
              gbc.gridx = 1;
              gbc.gridy = 2;
              panel.add(downButt, gbc);

            JButton leftButt = new JButton();//Buttons.leftButton();
              gbc.gridx=0;
              gbc.gridy = 1;
              panel.add(leftButt, gbc);

            JButton rightButt = new JButton();//Buttons.rightButton();
              gbc.gridx =2;
              gbc.gridy = 1;
              panel.add(rightButt, gbc);

            window.add(panel);
            window.setVisible(true);

           }

根据我的理解 - 在阅读和重读 Java 文档之后。 - 这应该给我 4 个十字形的按钮。然而,情况并非如此,按钮在窗口中央一个接一个地堆叠。 我错过了什么?

最佳答案

为什么使用 gridheight 和 gridwidth 为 3?至少可以说这有点奇怪。

为了我的钱,我会简化事情并使用简单的 GridLayout:

import java.awt.GridLayout;
import javax.swing.*;

public class Foo003 {
   public static void main(String[] args) {
      JButton upButton = new JButton("Up");
      JButton downButton = new JButton("Down");
      JButton leftButton = new JButton("Left");
      JButton rightButton = new JButton("Right");
      JComponent[][] components = { 
            { new JLabel(), upButton, new JLabel() },
            { leftButton, new JLabel(), rightButton },
            { new JLabel(), downButton, new JLabel() } };

      JPanel panel = new JPanel(new GridLayout(components.length,
            components[0].length, 8, 8));
      for (int i = 0; i < components.length; i++) {
         for (int j = 0; j < components[i].length; j++) {
            panel.add(components[i][j]);
         }
      }

      int eb = 15;
      panel.setBorder(BorderFactory.createEmptyBorder(eb, eb, eb, eb));

      JFrame frame = new JFrame("Grid e.g.");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(panel);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }
}

enter image description here

关于java - 无法使 Java GridBagConstraints 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117970/

相关文章:

java - 如何在不公开所有内容的情况下测试 Java 中的默认访问级别类?

java - spring boot - 应用程序启动两次..?

java - 图形循环故障,如何解决?

java - 填充文本区域后将其滚动到顶部

java - 如何取消 JPanel 的重绘?

Java 计时器 - 使用 Platform.runLater 更新标签

java - 使用 JButton ActionListener 在同一个包中运行不同的类

c# - 在图片盒中绘制颜色?

plot - 具有给定值的离散概率分布图

Java : How to Avoid flickering on shape-made only animation (no image file)?