【发布时间】: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(...); 时它可以工作。你知道这背后的原因吗?