Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么可以';我使用GridBagLayout在JPanel中创建了5个以上的按钮_Java_Swing_Jpanel - Fatal编程技术网

Java 为什么可以';我使用GridBagLayout在JPanel中创建了5个以上的按钮

Java 为什么可以';我使用GridBagLayout在JPanel中创建了5个以上的按钮,java,swing,jpanel,Java,Swing,Jpanel,我正在尝试使用JFrame制作一个计算器JPanel在我创建超过5个按钮后不会显示任何内容。这是我的密码: JFrame: package graphics; import java.awt.*; import javax.swing.*; public class Driver01 { public static void main(String[] args) { JFrame frame = new JFrame("Basic Calculator");

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

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个按钮

没有

只需更改您的

frame.setContentPane(新的Panel01())

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


我不知道它为什么有效,但重要的是它有效

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