2010-06-21 24 views
0

这是我开发的代码。这是为我的游戏保存并执行每个外部JFrame的主程序。 chooseGender是一个外部程序,它只是一个JFrame及其组件。如何将WindowListener添加到外部事件

我的目标是当chooseGender执行时,当用户选择一个选项(男性,女性)时,它有2个按钮,actionListener将帧设置为setVisible(false),然后打开下一个WindowClosing事件JFrame,(chooseRace)。这会发生多个帧,但这两个是用于学习的目的。我很感激提前的帮助。 :)

所以我的问题是,我会如何去添加一个WindowListener来选择在这个程序中的Gender,所以我可以关闭它,并打开下一个?

package javagame; 

import java.awt.EventQueue; 
import java.awt.HeadlessException; 
import java.awt.event.WindowEvent; 
import java.awt.event.WindowListener; 
import javax.swing.JFrame; 

public class Main implements WindowListener { 


    public static void main(String[] args) { 

      EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       new chooseGender().setVisible(true); 
      } 
     }); 

      EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       new chooseRace().setVisible(false); 
      } 
     }); 
    } 

回答

1

一个简单的方法来实现这可能只是使用模态JDialogs

的代码将类似于以下内容:

main { 

    new chooseGender().setVisible(true); 
    new chooseRace().setVisible(true); 
    new chooseAge... 

} 

你想实现一个WidowListener类似以下内容:

public class OpenNewWindowWindowListener extends WindowAdapter { 
    public void windowClosing(WindowEvent e){ 
     // in here open the next window. 
    } 
} 

而且这个窗口监听器添加到正确的框架:

// In the constructor for the JFrame 
addWindowListener(new OpenNewWindowListener()); 

而且,这些类中的每一个都会extendJDialog,并在其构造函数中使用setModal(true)

+0

等一下,我得去研究一下。我还没有深入Java。 – 2010-06-21 17:07:52

+0

呃,他们仍然是JFrames,虽然正确,并且仍然会执行*我想要的方式? – 2010-06-21 17:11:18

+0

@Nick,你需要让他们成为'JDialogs'。 'JDialogs'与JFrames非常相似。 – jjnguy 2010-06-21 17:14:42