2011-01-29 7 views
0

おはよう!Javaプロジェクト - フリーズフレーム

私はJavaでゲームをしています。私のメニューボタンには、New Game、HighScore、About、Quitが含まれています。 しかし、ユーザーがメインゲームに進む前に、まず彼の名前を入力する必要があります。私は次のようにこのコードを使用しました:

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

はあなたのプレイヤーがモーダルダイアログフレーム作りです。 JFrameではなく、setModalメソッドを使用するか、またはJDialogのコンストラクタを使用してモーダルに設定することで、JFrameまたはJDialogのサブクラスにする必要があります。たとえば:

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

次に、あなたのようなメインフレームからダイアログを作成することができます。あなたはp1.setVisible(true)を呼び出すと

Player p1 = new Player(this); 

、メインフレームはブロックされ、unclickableされます。

+0

これでバグがあります。しかし、コードなしでは、それが何であるかを推測することはできません。 –

+0

メイン画面を暗くして、プレーヤーのダイアログボックスを強調表示できますか?ありがとう – newbie

+0

@Hovercraftそれはすでにうまくいきました。どのように私はプレーヤーのダイアログボックスを強調表示するためにメイン画面の色を暗くすることができますか?ありがとうございました – newbie

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 
*/ 
関連する問題