2014-12-11 2 views
-2

Я работаю над домашним заданием, которое просит меня исследовать java api, для которого класс наследуется классом JFrame, который объявляет метод setVisible. Затем импортируйте этот класс и измените код в основном методе, поэтому переменная фрейма объявляется как этот тип, а не тип JFrame.Java Homework using inheritence

Я нашел, какой класс объявляет метод 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); 
    } 
} 
+0

Ваш вопрос очень расплывчатый и неясный для меня. может быть только я? !!! –

+0

Извините, я не пытался расплыться. Возможно, учебник, из которого я получил его, является неопределенным lol, который я пытаюсь изменить, расширяет JFrame до JWindow и все еще работает нормально. – Mike

+0

Если вы посмотрите на JavaDocs для ['JWindow'] (https://docs.oracle.com/javase/7/docs/api/javax/swing/JWindow.html), вы обнаружите, что' setDefaultCloseOperation' является не декальцированные внутри него. Это объявлено 'JFrame' напрямую – MadProgrammer

ответ

2

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

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

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

+0

Ничего себе, теперь я чувствую себя глупо. Спасибо! – Mike

1

Поскольку ваш класс ProductFrame расширяет JFrame напрямую, вы не можете сказать

JWindow frame = new ProductFrame(); 

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