2016-10-06 93 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 at Panel。 (RandomArtist.java:40) \t at Frame。 (RandomArtist.java:25) \t at Panel。 (RandomArtist.java:40) \t at Frame。 (RandomArtist.java:25) – oolongtea

+0

也許你應該爲這個錯誤創建一個新的問題,以便我們可以幫助更多 –