小编典典

为什么我的JFrame是空的?

java

我似乎无法弄清楚为什么我的JFrame为空。我要去哪里错了?

导入javax.swing。*; 导入java.awt.FlowLayout;

公共类GUIExample扩展JFrame {

JCheckBox box1 = new JCheckBox("Satellite Radio");
JCheckBox box2 = new JCheckBox("Air Conditioning");
JCheckBox box3 = new JCheckBox("Manual Tranmission");
JCheckBox box4 = new JCheckBox("Leather Seats");
JRadioButton radio1 = new JRadioButton("Car");
JRadioButton radio2 = new JRadioButton("Pickup Truck");
JRadioButton radio3 = new JRadioButton("Minivan");
JTextField text = new JTextField();
ButtonGroup group = new ButtonGroup();

public void newGUI() {

    setLayout(new FlowLayout());
    JPanel panel = new JPanel();
    JPanel textPanel = new JPanel();

    add(textPanel);
    add(panel);

    panel.add(box1);
    panel.add(box2);
    panel.add(box3);
    panel.add(radio1);
    panel.add(radio2);
    panel.add(radio3);
    group.add(radio1);
    group.add(radio2);
    group.add(radio3);

}

public static void main(String[] args) {

    JFrame frame = new JFrame("GUI Example");
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setVisible(true);

}

}


阅读 319

收藏
2020-11-30

共1个答案

小编典典

您忘记在jFrame中添加contentPane了,就像这样

frame.setContentPane(panel);

我注意到您正在使用继承来构建jFrame,因此在这种情况下,您需要实例化自己的类。我已经用最小的代码重构了您的代码以运行jFrame。

public class GUIExample extends JFrame {

    JCheckBox box1 = new JCheckBox("Satellite Radio");

    public static void main(String[] args) {
        JFrame frame = new GUIExample("GUI Example");
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());
        panel.add(box1);

        frame.setContentPane(panel);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        frame.setVisible(true);
    }
}

基本上,您创建一个JFrame,创建一个JPanel,将组件添加到此面板,然后使用将该面板设置为您的框架setContentPane(panel)

对不起,我现在无法测试,因此,如果有人可以并根据需要进行修复,将不胜感激,但这是这样的。

2020-11-30