2014-03-29 54 views
0

後,我有Menu類按鈕 - newGame並退出:按鈕JFrame的活躍創造新JPanel

public class Menu extends JFrame 
{ 
    JButton newGameButton = new JButton(); 
    ... 

    @Override 
    public void mouseClicked(MouseEvent e) 
    { 
    game.start(); 
    } 
} 

點擊按鈕,新的遊戲開始後,所以該類:

public class Game extends JPanel implements Runnable 
{ 
    private Thread t; 

    public void start() 
    { 
    t = new Thread(this); 
    t.start(); 

    setVisible(true); 
    } 
} 

當我創建JPanel後,遊戲啓動並且按鈕不可見,但是如果我單擊某個按鈕的位置,該按鈕會閃爍並繼續。我正在使用paintComponent(g)方法進行繪製,之前我在Canvas而不是JPanel上進行了繪製,之後將其更改爲JPanel我有這個問題,有什麼想法嗎?

編輯:here是工作(Canvas)和非工作(JPanel)代碼,在JPanel中我可以多次點擊按鈕,因爲我想要的。

+3

爲了更好地幫助越早,張貼[MCVE](http://stackoverflow.com/help/ mcve)(最小完整和可驗證示例)。另外,那個'Runnable'看起來不對。所有的GUI更新都應該在EDT上,並且運行它的'Thread'不是。 –

+0

您是否嘗試過我的解決方案發布在[KeyListener僅在點擊畫布後激活](http://stackoverflow.com/questions/22724286/keylistener-active-only-after-click-on-canvas/22724561#22724561)。根據您的意見,它在Canvas中工作正常,但現在它在使用JPanel後無法工作。試試我的解決方案,您不需要將其轉換爲JPanel。 – Braj

+0

感謝Braj的幫助,但是我刪除了KeyListener,現在我正在使用密鑰綁定並且它的工作非常完美。 –

回答

0

如果我理解正確,你的JPanel會在遊戲菜單按鈕的頂端產生,你仍然可以點擊它們?

請在面板內部的菜單,並使其不可見當遊戲開始

例如:

game.start(); 
gameMenu.setVisible(false); 
+0

如果我這樣做,那麼我可以'看到兩個 - JFrame和JPanel –

+0

那麼JFrame裏面的JPanel不是嗎?然後使JFrame不可見 –

+0

JPanel是在JFrame –