Java 为什么赢了';我的身体里没有任何东西出现吗?

Java 为什么赢了';我的身体里没有任何东西出现吗?,java,swing,Java,Swing,我试着将组件添加到框架中,但它也有同样的问题。所以我创建了一个类和一个面板,我正在尝试这样做。但现在我有同样的问题。我的所有按钮都不显示在框架内。我也得到了一个非法的辩论例外。(此代码现在起作用)我所做的更改如下所示 import java.awt.*; import javax.swing.*; public class Pan extends JFrame { public Pan(){ setLayout(new GridLayout(1,1)); JPanel pan

我试着将组件添加到框架中,但它也有同样的问题。所以我创建了一个类和一个面板,我正在尝试这样做。但现在我有同样的问题。我的所有按钮都不显示在框架内。我也得到了一个非法的辩论例外。(此代码现在起作用)我所做的更改如下所示

import java.awt.*;
import javax.swing.*;
public class Pan extends JFrame {
 public Pan(){
    setLayout(new GridLayout(1,1));
     JPanel panel1 = new JPanel(new GridLayout(4,3));

    JButton zero = new JButton(""+0);
    JButton one = new JButton(""+1);
    JButton two = new JButton(""+2);
    JButton three = new JButton(""+3);
    JButton four = new JButton(""+4);
    JButton five = new JButton(""+5);
    JButton six = new JButton(""+6);
    JButton seven = new JButton(""+7);
    JButton eight = new JButton(""+8);
    JButton nine = new JButton(""+9);
panel1.add(zero);
panel1.add(one);
panel1.add(two);
panel1.add(three);
panel1.add(four);
panel1.add(five);
panel1.add(six);
panel1.add(seven);
panel1.add(eight);
panel1.add(nine);

add(panel1);
}

public static void main(String[] args){
    Pan frame = new Pan();
    frame.setSize(800, 800);
    frame.setLocationRelativeTo(null);
    frame.setTitle("Number Pad");
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.setVisible(true);

}}

正如ZouZou指出的,void Pan()不是构造函数,因此不会被调用。此外,您可能希望将面板添加到框架的根窗格中

请尝试以下代码:

import java.awt.*;
import javax.swing.*;
public class Pan extends JFrame {
public Pan(){
    JPanel panel = new JPanel(new GridLayout(4,3));

    JButton zero = new JButton(""+0);
    JButton one = new JButton(""+1);
    JButton two = new JButton(""+2);
    JButton three = new JButton(""+3);
    JButton four = new JButton(""+4);
    JButton five = new JButton(""+5);
    JButton six = new JButton(""+6);
    JButton seven = new JButton(""+7);
    JButton eight = new JButton(""+8);
    JButton nine = new JButton(""+9);

    panel.add(zero);
    panel.add(one);
    panel.add(two);
    panel.add(three);
    panel.add(four);
    panel.add(five);
    panel.add(six);
    panel.add(seven);
    panel.add(eight);
    panel.add(nine);
    add(panel);
}

public static void main(String[] args){
    Pan frame = new Pan();
    frame.setSize(800, 800);
    frame.setLocationRelativeTo(null);
    frame.setTitle("Number Pad");
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.setVisible(true);

}}

行下异常-将容器的父级添加到自身中

panel.add(panel);

还有一个更改总是从
EventQueue.invokeLater()调用它


void Pan()
,这不是构造函数。您从未调用
Pan()
方法。但我怀疑你想让它成为一个构造函数。它应该是一个构造函数,这样就可以去掉
void
部分,使它成为一个真正的构造函数。为什么它不是一个构造函数,因为它有void。构造函数没有指定它的return当我将其更改为public时,它仍然有一个错误。IllegalArgumentException请尝试我粘贴的代码。这对我来说很有效。我在执行panel之后仍然收到一个错误。添加(panel)ok将其更改为panel1。您的代码中声明了
panel1
在哪里?我刚刚将代码更改为现在可以使用的代码。我想您不需要将其重命名为
panel1
。您只需删除行
panel.add(panel)在上一个代码中。我想你现在已经解决了,现在就关闭它,按照我的建议去做。
public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            Pan frame = new Pan();
            ...
            frame.setVisible(true);

        }
    });

}