2013-04-03 2 views
1

У меня есть код, в котором я показываю диалог с двумя текстовыми полями и двумя кнопками (как OK, и Отмена, обычное окно входа в систему). Выполнение основного кода после «.setVisible (true)» обусловлено значениями, введенными в этом модальном окне.UISpec4J Захват модального диалога перед началом триггера

Проблема, с которой я столкнулся в настоящее время является то, что если я делаю что-то вроде этого:

 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), потому что в противном случае я не могу запустить свой «триггер» на основе чего-либо, введенного обработчиком окна.

Каков правильный подход для проверки этого?

Спасибо!

+1

У меня такая же проблема. Метод setVisible просто не блокируется при запуске как тестовый файл. – Sponiro

ответ

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 он отлично работает.

+1

Кажется, что в этот момент JRE начинает проверять метод isModalityTypeSupported инструментария в JDialog (Frame, bool), а UISpec4J всегда возвращает false, поэтому ваше диалоговое окно никогда не будет создано модальным. – Pete

Смежные вопросы