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