2011-01-29 23 views
0

美好的一天!Java項目 - 如何凍結幀

我在做Java遊戲。我的菜單按鈕包括新遊戲,HighScore,關於和退出。 但是在用戶可以進入主遊戲之前,他需要先輸入他的名字。我用這個代碼如下:

private void btnNewGameMouseClicked(java.awt.event.MouseEvent evt) { 
     Player p1 = new Player(); 
     this.setVisible(false); // I must replace this code 
     p1.setVisible(true); 
    } 

我的問題是,我不想讓主菜單隱藏。我想讓它凍結,並且在玩家名字被詢問時不能被訪問。

我的主菜單框大於播放框。當然,我可以只刪除代碼this.setVisible(false),但問題是我點擊時仍然可以訪問主菜單...我想要主菜單凍結和當玩家框架彈出時無法訪問..(請參閱下圖)請幫助我。謝謝。

Sample Image

回答

3

你想要做的是讓你的播放器畫面一模態對話框。您可能希望將其設置爲JDialog的子類,而不是JFrame或您正在使用的任何類型,並使用其setModal方法或JDialog的構造函數之一將其設置爲模態。例如:

public Player(JFrame owner) { 
    super(owner, true); // makes the dialog modal 
    // ... 
} 

然後,你可以從像主框架創建對話框:

Player p1 = new Player(this); 

當你調用p1.setVisible(true),主框架將被阻塞,無法點擊。

+0

然後你有一個錯誤。但沒有代碼,我們無法猜測它是什麼。 – 2011-01-29 04:47:23

0
private void btnNewGameMouseClicked(java.awt.event.MouseEvent evt) 
{ 
    Player p1 = new Player();  
    p1.setVisible(true); 
    setEnabled(false); 
} 

/* 
setEnabled(boolean b) (java.​awt.​Component) 
Enables or disables this component, depending on the value of the parameter b. An enabled component can respond to user input and generate events. Components are enabled initially bydefault.enter code here 
*/