Java项目 - 如何冻结Frame

时间:2011-01-29 04:09:45

标签: 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

2 个答案:

答案 0 :(得分:3)

您要做的是让您的播放器框架为模态对话框。您可能希望将其设为JDialog的子类而不是JFrame或您正在使用的任何子类,并使用其setModal方法或JDialog之一将其设置为模态构造函数。例如:

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

然后你可以从主框架创建对话框,如:

Player p1 = new Player(this);

当您致电p1.setVisible(true)时,主框架将被阻止且无法点击。

答案 1 :(得分: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
*/