2016-04-10 33 views
-4

我工作的一個項目(同一個作爲我的最後一個問題),我決定實施Jbutton將到「手藝」的武器和裝備,但是,在本例中如何爲了實現一個JButton,它使用了初始化buttonName.setText()[我忽略了這個,因爲在我的初始化中我已經設置了文本]和getContentPane()。add(buttonName);我試圖用這條線設置JButton,但是,無濟於事。我得到這個錯誤:Adventurine.java:272:錯誤:無法找到符號。 任何想法,爲什麼這是,或者我只是一個白癡,我錯過了什麼?的getContentPane沒有工作,找不到符號錯誤

任何幫助表示讚賞。

編輯:

下面是我使用的代碼,在3種不同風格的 風格1:

private JButton craftClub = new JButton("Craft A Club"); 
    getContentPane().add(craftClub); 

風格2:

private JButton craftClub = new JButton("Craft A Club"); 
    frame.getContentPane().add(craftClub); 

風格3:

private JButton craftClub = new JButton("Craft A Club"); 
    frame.getContentpane(); 
    frame.add(craftClub); 

樣式1我得到找不到的getContentPane和craftClub 樣式2我得到預期的的getContentPane的(和之前的符號錯誤「;」預期的。 in .add(craftClub); 樣式3我得到預期

+0

你會發現,所以我當你包含你的問題的實際代碼和實際的錯誤堆棧跟蹤時,它更有幫助。 – billjamesdev

+0

我的代碼,但我錯過了錯誤堆棧跟蹤,我不知道在哪裏可以找到它的Mac – Rocket6488

+0

這是一個編譯器錯誤,也不例外。 – SLaks

回答

0

好了,我可以用更多的代碼,但在你所寫的內容了一些線索給我一個想法。我想你把這個線在錯誤的地方:

frame.getContentPane().add(craftClub); 

我想你也許有這樣的代碼:

class Demo { 
    private JFrame frame = new JFrame("MyFrame"); 
    private JButton craftClub = new JButton("Craft A Club"); 
    frame.getContentPane().add(craftClub); // This is bad 

    public static void main(String[] args) { 
     Demo demo = new Demo(); 
     // more stuff here 
    } 
} 

而這就是問題所在。你需要知道聲明和初始化之間的區別。

更改您的代碼是這樣的:

class Demo { 
    private JFrame frame; 
    private JButton craftClub; 

    Demo() { 
     frame = new JFrame("MyFrame"); 
     craftClub = new JButton("Craft A Club"); 
     frame.getContentPane().add(craftClub); // this code is called when you new Demo() in the main 
    } 

    public static void main(String[] args) { 
     Demo demo = new Demo(); 
     // more stuff here 
    } 
} 

如果這還不夠,你希望得到你......你需要發佈更多的代碼,這樣我就可以回答更多你的上下文。

+0

所以你說它需要在JFrame設置中添加?因爲那不是我現在擁有的地方? – Rocket6488

+0

我在說你不能執行代碼(除了「新」聲明,你不應該那樣做),你可以在你聲明類的成員的同一區域執行代碼。我將那個「frame.getContentPane()。add」調用移動到合法的位置。但是我只是猜測你做錯了,因爲你只是選擇向我們展示2行代碼。 – billjamesdev

+0

我曾嘗試在JFrame設置之外,這可能是爲什麼,對不起我沒有足夠的上下文 – Rocket6488

1

這...

private JButton craftClub = new JButton("Craft A Club"); 
getContentPane().add(craftClub); 

看起來可疑,它看起來像你想添加一個方法或交易執行上下文之外你按鈕時,您或您的misdefining變數,但是我希望到看到一個不同的錯誤

相反,你應該只從交易執行上下文中添加你的按鈕,像一個方法或構造,例如...

public class Awesomeness { 
    private JFrame frame; 
    private JButton craftClub = new JButton("Craft A Club"); 

    public Awesomeness() { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       frame = ...; 
       //... 
       frame.add(craftButton); 
       // frame.getContentPane().add(craftButton); 
      } 
     }); 
    } 
}