我是编程新手,正在遵循本 Java 天气 GUI 应用程序教程。以下是迄今为止我正在使用的极少量代码。我收到错误的地方是“super(“Weather App”);”线。
import javax.swing.*;
public class WeatherAppGui extends JFrame
{
public WeatherAppGui
{
//GUI and title
super("Weather App");
//kill app on closure
setDefaultCloseOperation(EXIT_ON_CLOSE);
//dimensions
setSize(450, 650);
//load gui to center screen
setLocationRelativeTo(null);
//manually position gui components
setLayout(null);
//no resizing
setResizable(false);
}
}
幕后发生了什么导致“规范构造函数无法委托给另一个构造函数”?如果 super 关键字意味着引用父类(在这种情况下为 JFrame)方法,并且这就是错误出现的地方...那么为什么 IntelliJ 会谈论构造函数,如果构造函数基本上只是保存对象属性(参数) )直到创建对象时调用构造函数并且对象获取其属性(参数)(通俗地说)。
您必须将右括号添加到构造函数中。
喜欢:
public class WeatherAppGui extends JFrame
{
public WeatherAppGui()
{
//GUI and title
super("Weather App");
...
而不是
public class WeatherAppGui extends JFrame
{
public WeatherAppGui
{
//GUI and title
super("Weather App");
...
构造函数应该在类名后面有一个参数列表。你应该写:
public WeatherAppGui() {
// ...
}
注意类名称后面的括号。这是一个空的参数列表。
如果没有括号,编译器会将其解析为规范构造函数,这是记录类可以拥有的东西,但在像
WeatherAppGui
这样的常规类中不允许使用。所以错误消息有点令人困惑。
如果删除
super
构造函数调用,“WeatherAppGui”将突出显示为红色,并且 IntelliJ(不确定其他 IDE)会显示“预期参数列表”,这是一条更有用的错误消息。