Подтвердить что ты не робот

Как отключить основной JFrame при открытии нового JFrame

Пример теперь у меня есть основной фрейм, содержащий jtable, отображающий всю информацию о клиенте, и появилась кнопка create, чтобы открыть новый JFrame, который позволяет пользователю создавать нового клиента. Я не хочу, чтобы пользователь мог открыть более одного кадра создания. Любой компонент swing или API может это сделать? или как отключить основной кадр? Что-то вроде JDialog.

4b9b3361

Ответ 1

Я предлагаю вам сделать ваш новый диалог с клиентом модальным JDialog, чтобы вы не разрешали вводить другие диалоги/фреймы в вашем приложении, пока он виден. Подробнее см. учебник по модальности.

Ответ 2

Я думаю, вы должны использовать этот код для основного jframe при попытке открыть новый:

this.setEnabled(false);

Ответ 3

Извините за поздний ответ, но вы рассмотрели шаблон дизайна Singleton? Он будет возвращать тот же экземпляр класса всякий раз, когда вы захотите этого класса. Поэтому, если пользователь хочет, чтобы кадр вводил детали, будет открыт только один фрейм (тот же экземпляр)

Это выглядит примерно так:

private static MySingleFrame instance = null; //global var

private MySingleFrame() { } //private constructor 
private static MySingleFrame getInstance()
{

if(instance == null)
{
instance = new MySingleFrame();
}

//returns the same instance everytime MySingleFrame.getInstance() is called
return instance; 


}

Ответ 4

просто используйте firstFrame.setVisible(false) в первом кадре. Это сделает его скрытым.

если вы хотите использовать более общий подход, вы могли бы где-то ссылаться на текущий отображаемый кадр и изменять его, когда новый кадр запрашивается для показа

JFrame currentFrame;

void showRequest(JFrame frame)
{
  currentFrame.setVisible(false);
  currentFrame = frame;
  currentFrame.setVisible(true);
}

Ответ 5

Вы можете использовать:

 private void btn_NewFormActionPerformed(java.awt.event.ActionEvent evt) { 

             this.hide();
             new Frm_NewFormUI().setVisible(true);

 }