Как добавить WindowListener для внешнего события - PullRequest
0 голосов
/ 21 июня 2010

Это мой код, который я разработал.Это основная программа, которая содержит и выполняет каждый внешний JFrame для моей Игры.chooseGender - это внешняя программа, представляющая собой не что иное, как JFrame и его компоненты.

Моя цель для этого заключается в том, чтобы при выполнении executeGender у него было 2 кнопки для параметров (мужской, женский), когда пользователь выбирает один из них, actionListener устанавливает для фрейма setVisible (false), а затем открывает событие WindowClosingследующий JFrame, (выберите гонку).Это произойдет еще для нескольких кадров, но эти два предназначены для целей обучения.Я ценю помощь заранее.:)

Итак, мой вопрос: как мне добавить окно 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 Ответ

1 голос
/ 21 июня 2010

Простой способ реализовать это может быть просто с помощью модального 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).

...