Java Project - как заморозить фрейм - PullRequest
0 голосов
/ 29 января 2011

Добрый день!

Я играю в игру на Java. Моя кнопка меню включает в себя новую игру, 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 ]

3 голосов
/ 29 января 2011

То, что вы хотите сделать, это сделать ваш проигрыватель фрейма модальным диалогом .Вы хотели бы сделать его подклассом JDialog , а не JFrame или того, что вы используете, и установить его как модальный, используя метод setModal или один из конструкторов JDialog.,Например:

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

Затем вы можете создать диалог из основного фрейма, например:

Player p1 = new Player(this);

Когда вы наберете p1.setVisible(true), основной фрейм будет заблокирован и не будет доступен клик.

0 голосов
/ 21 апреля 2013
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
*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...