2010-06-21 7 views
0

Ceci est mon code que j'ai développé. C'est le programme principal qui contient et exécute chaque JFrame externe pour mon jeu. chooseGender est un programme externe qui n'est rien d'autre qu'un JFrame et ses composants.Comment ajouter un WindowListener à un événement externe

Mon but pour ceci est quand chooseGender s'exécute, il a 2 boutons pour les options (mâle, femelle) quand l'utilisateur en choisit un, un actionListener mettrait le frame à setVisible (false) et ensuite un événement WindowClosing ouvrira le suivant JFrame, (chooseRace). Cela se produirait pour plusieurs autres cadres, mais ces 2 sont à des fins d'apprentissage. J'apprécie l'aide à l'avance. :)

Donc, ma question est, comment pourrais-je faire pour ajouter un WindowListener à choisirGender dans ce programme afin que je puisse le fermer et ouvrir le prochain?

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

Répondre

1

Un moyen facile de mettre en œuvre cela peut être simplement en utilisant modal JDialogs.

Le code serait similaire à ce qui suit:

main { 

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

} 

vous voulez mettre en œuvre un WidowListener semblable au suivant:

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

Et d'ajouter que l'auditeur de la fenêtre à l'image correcte:

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

Et, chacune de ces classes serait extendJDialog et, dans leurs constructeurs, utiliser setModal(true).

+0

Attendez, je vais devoir faire des recherches. Je n'ai pas encore été aussi loin dans Java. –

+0

Euh, ils seraient toujours JFrames si correct, et exécuterait toujours le chemin * Je voudrais? –

+0

@Nick, vous auriez besoin de les faire 'JDialogs'. 'JDialogs' sont très similaires à JFrames. – jjnguy

Questions connexes