【问题标题】:Why can't I create more than 5 buttons in JPanel using GridBagLayout为什么我不能使用 GridBagLayout 在 JPanel 中创建超过 5 个按钮
【发布时间】:2015-12-29 01:47:55
【问题描述】:

我正在尝试使用JFrame 制作计算器。创建超过 5 个按钮后,JPanel 不显示任何内容。这是我的代码:

JFrame:

package graphics;
import java.awt.*;
import javax.swing.*;

public class Driver01 {

    public static void main(String[] args)  {

        JFrame frame = new JFrame("Basic Calculator");

        frame.setContentPane(new Panel01());
        frame.setSize(400, 500);
        frame.setLocation(850, 100);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setContentPane(new Panel01());
        frame.setAlwaysOnTop(true);

    }
}

还有JPanel:

package graphics;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;

public class Panel01 extends JPanel {

    JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b0;

    GridBagConstraints gbc = new GridBagConstraints();

    public Panel01() { 

        setLayout(new GridBagLayout());

        b1 = new JButton("1");
        gbc.gridx = 2;
        gbc.gridy = 2;
        add(b1, gbc);
        b2 = new JButton("2");
        gbc.gridx = 3;
        gbc.gridy = 2;
        add(b2, gbc);
        b3 = new JButton("3");
        gbc.gridx = 4;
        gbc.gridy = 2;
        add(b3, gbc);
        b4 = new JButton("4");
        gbc.gridx = 2;
        gbc.gridy = 3;
        add(b4, gbc);
        b5 = new JButton("5");
        gbc.gridx = 3;
        gbc.gridy = 3;
        add(b5, gbc);
//      b6 = new JButton("6");
//      gbc.gridx = 4;
//      gbc.gridy = 3;
//      add(b6, gbc);
//      b7 = new JButton("7");
//      gbc.gridx = 2;
//      gbc.gridy = 4;
//      add(b7, gbc);
//      b8 = new JButton("8");
//      gbc.gridx = 3;
//      gbc.gridy = 4;
//      add(b8, gbc);
//      b9 = new JButton("9");
//      gbc.gridx = 4;
//      gbc.gridy = 4;
//      add(b9, gbc);
//      b0 = new JButton("0");
//      gbc.gridx = 2;
//      gbc.gridy = 5;
//      add(b0, gbc);
    }

}

当我注释掉最后 5 个按钮时,我可以看到前 5 个按钮。

5 个按钮

没有

【问题讨论】:

  • 组件在哪里进入较早的网格位置? x 和 y 0 到 1?
  • 不知道,有关系吗?
  • 您的代码看起来不错。我检查了,在您取消注释代码后,所有 10 个按钮都可见。您面临的确切问题是什么?无论如何 frame.setContentPane(new Panel01());似乎是多余的。
  • 谢谢,当我删除 frame.setContentPane(...); 时它可以工作。你知道这背后的原因吗?

标签: java swing jpanel


【解决方案1】:

改变你的

frame.setContentPane(new Panel01());

Panel01 p1 = new Panel01();
frame.setContentPane(p1);

我不确定它为什么起作用,但重要的是 它起作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-04
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多