日安!
我正在用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),但问题是当单击时我仍然可以访问主菜单...我希望主菜单冻结,并且在播放器画面弹出时无法访问。(见下图)请帮帮我。谢谢。

发布于 2011-01-29 12:29:19
你想要做的是让你的播放器框架成为一个模式对话框。您可能希望使它成为JDialog的子类,而不是JFrame或您正在使用的任何东西,并使用其setModal方法或JDialog的构造函数将其设置为模式。例如:
public Player(JFrame owner) {
super(owner, true); // makes the dialog modal
// ...
}然后您可以从主框架创建对话框,如下所示:
Player p1 = new Player(this);当您调用p1.setVisible(true)时,主框架将被阻塞且无法单击。
发布于 2013-04-21 12:49:37
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
*/https://stackoverflow.com/questions/4835092
复制相似问题