1

我有一些代码,其中显示了一个带有两个文本框和两个按钮的对话框(如确定和取消,典型的登录窗口)。“.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();

然后,密码永远不会正确,因为在触发器未完成之前不会调用处理程序。我希望它在我调用 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 始终为空,并且我的处理程序从未触发。同样,在 1.6u37 中它工作正常。

于 2013-04-17T11:01:02.570 回答