Java Домашнее задание с использованием наследования

Я работаю над домашней работой, которая просит меня исследовать Java API, для которого класс наследуется классом JFrame, который объявляет метод setVisible. Затем импортируйте этот класс и измените код в методе main, чтобы переменная кадра объявлялась как этот тип, а не как тип JFrame.

Я нашел, какой класс объявляет метод setVisible, JWindow, но всякий раз, когда я пытаюсь изменить код, он не запускается, поэтому любая помощь будет принята.

import javax.swing.JFrame;
import javax.swing.JWindow;


//JFrame is inherited from java.awt.Frame class
//setVisible is declared by the java.awt.Window class
public class ProductFrame extends JWindow
{
    public ProductFrame()
    {
        // all of these methods are available because
        // they are inherited from the JFrame class
        // and its superclasses

        this.setTitle("Product");
        this.setSize(200, 200);
        this.setLocation(10, 10);
        this.setResizable(false);

        // this method uses a field that's available
        // because it's inherited
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args)
    {
        // this creates an instance of the ProductFrame
        JWindow frame = new ProductFrame();

        // this displays the frame
        frame.setVisible(true);
    }
}

2 ответа

Решение

Вы нашли некоторый класс, у которого есть метод "setVisible()". Однако вашей задачей было найти класс, от которого наследуется JFrame.

JFrame не наследуется от JWindow.

Другими словами: если у вас была задача найти ваших предков и взять у них интервью об их работе, то опрос вашей сестры или двоюродного брата не сделает работу.

Так как ваш класс ProductFrame продолжается JFrame прямо не скажешь

JWindow frame = new ProductFrame();

Недопустимо устанавливать JWindow ссылка равна ProductFrame так как ProductFrame не распространяется JWindow, Вам нужно изменить объявление класса, чтобы оно было.

Другие вопросы по тегам