Как предотвратить загрузку окна, если оно еще не прошло этап входа в Java?

1

Я создал программу на Java, которая имеет два окна (JFrames):

a) Окно входа в систему,

б) Главное окно.

Правильный способ запуска программы - запустить сначала "Окно входа в систему", и если имя пользователя и пароль верны, то это окно перенаправляет вас в "Главное окно", делая "Лог-Окно" распоряжаться.

НО

Если кто-то запускает непосредственно "Главное окно" (игнорируя этап входа в систему), тогда это окно будет работать правильно без какой-либо аутентификации...

ТАК

Как я могу предотвратить "загрузку и запуск" главного окна, если кто-то запускает его напрямую (например, >> java Main_Window)? Я хочу, чтобы моя программа выполнялась только с порядком (1) "Окно входа в систему", а затем (2) "Главное окно".

РЕДАКТИРОВАТЬ

Класс Main_Window имеет только один main метод с приведенным ниже кодом:

public static void main(String[] args) {

  EventQueue.invokeLater(new Runnable() {
    public void run() {
      try {

        final Main_Window frame = new Main_Window();            
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        frame.addWindowListener(new WindowAdapter() {

          public void windowClosing(WindowEvent e) {
            toRunOnClose();
            frame.dispose();
          }

        });

      } catch (Exception e) {
        e.printStackTrace();
      }

    }

  });

}
  • 0
    не ставьте точку входа в главное окно
  • 0
    что вы имеете в виду?
Показать ещё 5 комментариев
Теги:
authentication
login
jframe

1 ответ

0
Лучший ответ

Предложения:

  • Ваше окно входа должно быть модальным диалогом, таким как JDialog, а не JFrame.
  • В вашем графическом интерфейсе должен быть только один основной метод - метод, который сначала вызывает ваш модальный диалог входа в систему, а затем в случае успеха открывает главный JFrame после этого.

Основной основной метод мог бы выглядеть примерно так:

   private static void createAndShowGui() {
      LoginDialog loginDialog = new LoginDialog();
      loginDialog.setVisible(true);

      // however you verify that the user is authentic
      if (loginDialog.verify()) {
         MainGui mainGui = new MainGui();
         mainGui.setVisible(true);
      }
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }

В приведенном выше примере, поскольку LoginDialog является модальным, код ниже loginDialog.setVisible(true) не запускается, пока диалоговое окно больше не отображается.


Что касается ваших вопросов:

1) Запустите некоторый код во время загрузки основного окна,

Запустите его в одном основном методе.

2) Как я могу установить внешний вид (позже) без основного метода

У вас будет основной метод, но только один основной метод.

3) Как я могу запустить некоторый код, когда фрейм закрывается (как я уже делаю сейчас)?

Сделайте то же самое, но в одном основном методе.

  • 0
    Очень хороший ответ, я понимаю, что вы имеете в виду, но я не знаком с modal dialogs . Кроме того, в моем классе "Log-in Window" содержится много кода (для целей проверки подлинности и других проверок). Существует ли простой способ преобразования класса "Log-in Window" входа в систему» в модальное диалоговое окно? Это просто?
  • 0
    @MinimalTech: прочитайте JDialog API, поскольку все это есть. Обратите внимание, что у вас не должно быть классов, расширяющих JFrame или JDialog, и что это будет мешать вашему коду. Вместо этого ваш графический интерфейс должен создавать JPanels, а затем вы можете помещать их в ваши модальные JDialogs или JFrames по мере необходимости.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню