Как запустить некоторый код, когда окно (jframe) загружается в Java?

1

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

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

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

"Окно входа в систему" вызывает "Главное окно", а затем закрывается.

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

Я пробую код ниже в main() методе "Главное окно", но он не работает...

Код в файле Main-Window.java:

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 windowOpened(WindowEvent e) {
            runSomeCode();
          }
        });

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

    }

  });

}

runSomeCode(); никогда не выполняется...

Способ закрытия "окна регистрации" и "Главное окно" заключается в следующем:

Код в файле Log-in-Window.java:

Main_Window mw = new Main_Window();
mw.setLocationRelativeTo(null);
mw.setVisible(true);

WindowEvent winCloseEvent = new WindowEvent(this,WindowEvent.WINDOW_CLOSING);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(winCloseEvent);
  • 0
    Почему вы добавили слушатель окна в «frame», а не «mw»? Разместите достаточно кода, чтобы мы могли воспроизвести проблему, потому что я не уверен, что вы спрашиваете.
  • 1
    Почему бы вам не поместить свой код инициализации пользовательского интерфейса в конструктор?
Теги:
swing
jframe

1 ответ

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

Это своего рода цель конструктора. Поскольку вы создали новый класс Main_Window, вы должны включить код, который хотите запустить во время создания главного окна. Пока ваше текущее определение класса Main_Window отсутствует, это будет что-то вроде этого.

public class Main_Window extends ?Frame implements ? {
    // members

    // constructor
    Main_Window(){
        //do some stuff here
    }

    // methods
}
  • 0
    Абсолютная правда! Оно работает! Извините, но я не знаком с Java Swing и не думал об этом!

Ещё вопросы

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