1

2 つのテキスト ボックスと 2 つのボタン (通常のログイン ウィンドウの [OK] と [キャンセル]) を含むダイアログを表示するコードがあります。「.setVisible(true)」の後のメイン コードの実行は、そのモーダル ウィンドウに入力された値に条件付けられます。

私が今直面している問題は、次のようなことをすると:

        WindowInterceptor.init(new Trigger() {
            @Override
            public void run() throws Exception {
                LoginModal loginWin=new LoginModal();
                loginWin.setVisible(true);
                if(loginWin.getPassword().equals("any")) {
                    System.out.println("password OK!");
                }
            }
        }).process(new WindowHandler() {
            @Override
            public Trigger process(Window window) {
                System.out.println("triggered!");
            }
        }).run();

そうすると、トリガーが終了するまでハンドラーが呼び出されないため、パスワードは決してOKではありません。setVisible(true) を呼び出したときに呼び出されることを期待します。そうしないと、ウィンドウ ハンドラーによって入力された何かに基づいて「トリガー」を実行できないからです。

これをテストする正しいアプローチは何ですか?

ありがとう!

4

1 に答える 1

2

これは UISpec4J と Java 1.6u38 の問題のようですが、1.6u37 では問題なく動作します。

たとえば、次の簡単なコードを使用します。

    WindowInterceptor.init(new Trigger() {

        @Override
        public void run() throws Exception {
            String myValue=JOptionPane.showInputDialog("thisssss");
            System.out.println("value " + myValue);
        }
    }).process(new WindowHandler() {
        @Override
        public Trigger process(Window window) {
            System.out.println("tal tal");
            return null
        }
    }).run();

myValue は常に null であり、ハンドラーはトリガーされませんでした。繰り返しますが、1.6u37 では正常に動作します。

于 2013-04-17T11:01:02.570 に答える