2016-10-06 5 views
2

私は3つのクラスを持っています。クラスWindowは、GUIコンポーネントを含み、セットアップすることになっています。フレームにパネルを追加したいが、以下のコードは機能していないようだ。別のクラスのパネルをフレームに追加する

エラー:これは、コンパイル・エラー・メッセージである変数getPanel

場所:型パネルの変数myPanel

class Window { 
    Frame myFrame = new Frame(); 
    Panel myPanel = new Panel(); 

    void run() { 
     myFrame.build(); 
     myPanel.build(); 
    } 

    public static void main(String[] args) { 
     (new Window()).run(); 
    } 
} 

class Frame { 
    JFrame frame; 

    Panel myPanel = new Panel(); 

    void build() { 
     frame = new JFrame("Frame"); 

     frame.add(button, BorderLayout.SOUTH); 
     frame.add(myPanel.getPanel); //compilation error: cannot find symbol 

     frame.setSize(500, 400); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 

class Panel extends Frame { 
    private JPanel panel; 

    void build() { 
    panel = new JPanel(); 
    } 

    public JPanel getPanel() { 
     return panel; 
    } 
} 

は、どのように私はフレームにパネルを追加するシンボルに

シンボルを見つけることができません?

答えて

1

getPanel()メソッドを呼び出そうとしていますが、単にgetPanelと入力して呼び出すようにしました。

括弧がありません。変数にアクセスするのではなく、メソッドを呼び出すことを示しています。

変更この行:これまで

frame.add(myPanel.getPanel); 

frame.add(myPanel.getPanel()); 

また、将来的には全体のエラーメッセージ、あなたが重要見つけるだけでなく、作品を含めるようにしてください。これにより、問題をすばやく見つけることができ、早急に対応することができます。

+0

ありがとうございました!しかし、今私は新しい問題を抱えています。実行後に表示される新しいエラーメッセージは、 java.lang.StackOverflowError \t Panelです。 (RandomArtist.java:40) \t at Frame。 (RandomArtist.java:25) \t(パネル上) (RandomArtist.java:40) \t at Frame。 (RandomArtist.java:25) – oolongtea

+0

おそらく、このエラーの新しい質問を作成して、もっと役立つようにしてください –

関連する問題