Java 创建JFrame时出错

Java 创建JFrame时出错,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我试图使用swing组件在Java中创建一个框架和面板,但在myframe()处出现错误,显示“声明无效,需要返回类型”。当我的老师在教室里运行它时,它成功地运行了,但现在它出现了错误 import javax.swing.*; class myFrame extends JFrame { private mypanel p1; myframe() /*here I'm getting error that "invalid decleration, return type

我试图使用swing组件在Java中创建一个框架和面板,但在myframe()处出现错误,显示“声明无效,需要返回类型”。当我的老师在教室里运行它时,它成功地运行了,但现在它出现了错误

import javax.swing.*;

class myFrame extends JFrame {

    private mypanel p1;

    myframe() /*here I'm getting error that "invalid decleration, return type required */ {
        this.setSize(400, 500);
        this.setTitle("My First GUI");
        setDeafultCloseOpeartion(JFrame.EXIT_ON_CLOSE);
        this.add(p1);
        setVisible(true);
    }
}

class mypanel extends Jpanel {

    private JButton b1;

    mypanel() {
        b1 = new JButton("Click me");
        this.add(b1);
    }
}

class mygui {

    public static void main(String args[]) {
        myframe f = new myframe();
        myframe f1 = new myframe();
    }
}

您应该将构造函数名称更改为myFrame

class myFrame extends JFrame {

    //The name of the constructor should be the same as the class name
    myFrame() {
       //...
    }
}
您最好以大写字母开头您的类名,如下所示:

class MyFrame extends JFrame {

    MyFrame() {
       //...
    }
}

您应该从
mypanel
中的面板创建对象,并将该对象添加到
JFrame
中,而不是执行此
private mypanel p1

import javax.swing.*;

class myFrame extends JFrame {

    // private mypanel p1;

    myFrame() /*here I'm getting error that "invalid decleration, return type required */ {
        this.setSize(400, 500);
        this.setTitle("My First GUI");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mypanel p=new mypanel();
        this.add(p);
        setVisible(true);
    }
}

class mypanel extends JPanel {

    private JButton b1;

    mypanel() {
        b1 = new JButton("Click me");
        this.add(b1);
    }
}

class mygui {

    public static void main(String args[]) {
        myFrame f = new myFrame();
        myFrame f1 = new myFrame();
    }
}

MyFrame()->构造函数的名称不正确

MyFrame与MyFrame不同。。。类名应该以大写字符开头。也就是说,它应该是
MyFrame
。extends-Jpanel应该是Jpanel,我认为它甚至不应该被称为MyFrame。对于组件来说,这是一个毫无意义的名称。它应该被称为类似LoginFrame的东西。它应该完全描述它是什么。我知道这只是一个测试类,但值得注意,以备将来参考。我已经更改了构造函数名称,现在它的sam类似于类名。这是一个编译错误,但给出了运行时错误。线程“main”java.lang.NullPointerExceptio在java.awt.Container.addImpl(未知源代码)在java.awt.Container.add(未知源代码)在javax.swing.JFrame.addImpl(未知源代码)在java.awt.Container.add(未知源代码)在myFrame.add(未知源代码)在MyGui.main(MyGui.java:27)您应该将“private MyPanel p1;”更改为“private MyPanel p1=new MyPanel();”,因为您必须通过关键字new创建MyPanel的实例。