1

これは私が開発した私のコードです。これは、私のゲームの各外部JFrameを保持して実行するメインプログラムです。ChooseGenderは、JFrameとそのコンポーネントに他ならない外部プログラムです。

これに対する私の目標は、chooseGenderを実行するときに、ユーザーが1つを選択すると、オプション(男性、女性)用の2つのボタンがあり、actionListenerがフレームをsetVisible(false)に設定し、WindowClosingイベントで次のJFrameを開くことです(chooseRace )。これはさらにいくつかのフレームで発生しますが、これら2つは学習目的です。よろしくお願いします。:)

だから私の質問は、このプログラムのchooseGenderにWindowListenerを追加して、それを閉じて次のプログラムを開くことができるようにするにはどうすればよいですか?

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

1 に答える 1

2

これを実装する簡単な方法は、モーダルを使用すること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());

そして、それらのクラスのそれぞれはextend JDialog、コンストラクターでを使用しますsetModal(true)

于 2010-06-21T17:06:42.277 に答える