2016-09-05 9 views
1

私は2つのクラスを持っています。私のQuizatMainClassクラスとwindowというクラスです。私は、サイズを設定してQuizatクラスからウィンドウを作成しようとしていますが、コンパイルされません。私は(xとy)例えば(1080と720)にパラメータを設定しました。しかしそれはそうではありません。私はJavaを使い慣れていないので、なぜこれを行うことができないのか分かりません。 IDEがそれを修正する方法は、スーパークラスのものに関するものです。誰かがこれが私に何を意味するのか、あるいは私が走ろうとしていることをやるためのより簡単な方法を説明できたら、私はそれを感謝します。レイマンの言葉でお願いします。JFrameのサイズを別のクラスから設定するには

QuizatMainClass:

package Quizat; 

public class QuizatMainClass extends Window{ 

    public static void main(String[] args) { 

    Window QuizatHomeScreen = new Window(1080, 20); 

    } 

} 

ウィンドウクラス:

package Quizat; 

import javax.swing.JFrame; 

public class Window{ 

    public Window(int x, int y){ 
     JFrame window = new JFrame(); 
     window.setSize(x,y); 
     window.setLocationRelativeTo(null); 
     window.setResizable(false); 
     window.setVisible(true); 
    } 

} 
+0

コードがコンパイルされない場合は、(コメントではなく)質問にコンパイラのエラーメッセージを投稿してください。 –

+0

詳細については、「編集」を参照してください。 –

+0

'new Window(1080、20);'プログラマーは、このようなことをするときに通常意図するのは、フレーム装飾を考慮しないためサイズが決まらないウィンドウを設定する、そのサイズのコンテンツペインを作ることです。 –

答えて

2

あなたの問題の説明はQuizatMainClassは、Windowクラスを拡張し、ウィンドウは、特定のパラメータ使用して、コンストラクタ、QuizatMainClass意志を持っているので、ということですパラメータを持つWindowのスーパーコンストラクタを特別に呼び出すコンストラクタを作成するか、Windowにデフォルトの引数なしコンストラクタを与える必要があります。

あなたの本当の問題は、あなたが継承を誤っているということです。 QuizatMainClassはWindowクラスを拡張するべきではありません。

+0

ありがとうございました。なぜそれが問題の原因になったのですか? – Cutter

+0

@Cutter:edit –

+1

を参照@Cutter:クラスにデフォルト以外のコンストラクタを渡すと、パラメータを持つコンストラクタではなく、デフォルトのパラメータなしコンストラクタが失われます。このクラスから継承する場合、新しい子クラスは、独自のコンストラクタ内の特定のスーパーコンストラクタを呼び出し、適切なパラメータを渡す必要があります。もう1つのオプションは、親クラスに引数なしのコンストラクタを与えることです。 –

関連する問題