我有一些代码,我正在显示一个带有两个文本框和两个按钮的对话框(如OK,和Cancel,典型的登录窗口)。在“.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)时,我希望它被调用,因为否则,我无法根据窗口处理程序输入的内容运行我的“触发器”。
测试此方法的正确方法是什么?
谢谢!
答案 0 :(得分: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它工作正常。