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

时间:2014-11-27 16:56:13

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

    }

  });

}

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

1 个答案:

答案 0 :(得分:3)

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

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

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

    // methods
}