java - 在java中加载窗口(jframe)时如何运行一些代码?

Min*_*ech 2 java swing jframe

我用 Java 制作了一个程序,它有两个窗口(JFrames):

a) 登录窗口,

b) 主窗口。

“登录窗口”调用“主窗口”,然后关闭。

如何在加载“主窗口”时运行一些代码(仅在“主窗口”框架第一次打开时运行一些代码一次)?

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();
      }

    }

  });

}
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

R S*_*ltz 5

这就是构造函数的目的。由于您创建了一个新类 Main_Window,因此您应该在其中包含在创建主窗口期间要运行的代码。虽然您当前对 Main_Window 类的定义不存在,但它会是这样的。

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

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

    // methods
}
Run Code Online (Sandbox Code Playgroud)