Я новичок в программировании и следую этому руководству для приложения с графическим интерфейсом погоды на Java. Ниже приведен очень небольшой объем кода, с которым я пока работаю. Я получаю ошибки в «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");
...
@2012anonBO2 добро пожаловать :)
Конструктор должен иметь список параметров после имени класса. Вам следует написать:
public WeatherAppGui() {
// ...
}
Обратите внимание на круглые скобки после имени класса. Это пустой список параметров.
Без круглых скобок компилятор анализирует это как канонический конструктор, который может иметь класс записи, но не допускается внутри обычного класса, такого как WeatherAppGui. Поэтому сообщение об ошибке немного сбивает с толку.
Если вы удалите вызов конструктора super, вместо этого «WeatherAppGui» будет выделен красным, а IntelliJ (не уверен насчет других IDE) скажет «Ожидается список параметров», что является гораздо более полезным сообщением об ошибке.
Спасибо, добрый сэр. Внимание к деталям было для меня проблемой здесь
Поскольку вам не хватает круглых скобок (должно было быть
public WeatherAppGui()), я думаю, что компилятор считает это конструктором записи.