2017-02-22 9 views
-2

Учитывая простейший код возможных:Как я могу автоматизировать ответ в диалоговом окне Swing?

//getDialogResponse() cannot be changed. 
public static int getDialogResponse() { 
    return JOptionPane.showConfirmDialog(null, "Make a really important choice.", "THE CHOICE", JOptionPane.YES_NO_CANCEL_OPTION); 
} 

public static void main(String[] args) { 
    int[] val = new int[1]; 
    SwingUtilities.invokeLater(() -> {val[0] = getDialogResponse();}); 
    //TODO: The program itself presses the 'Yes' button. 
    if(val[0] == JOptionPane.YES_OPTION) System.out.println("Good Choice."); 
    else System.out.println("Wise guy, huh?!"); 
} 

Robot кажется как плохой подгонки, так как он должен знать расположение диалогового окна вновь созданного, и если он не находится в том же месте каждый раз, его не будет работать, поэтому мне нужно знать, как получить расположение самой кнопки, или мне нужно знать метод, который не зависит от положения вновь созданного диалогового окна.

Кроме того, я не могу изменить код getDialogResponse(): это инвариант.

Так что я могу сделать?

+0

Зачем показывать панель в первую очередь, если она не может щелкнуть? –

+0

@MariusK. Он предназначен для модульного тестирования. Обычно пользователь * мог бы щелкнуть по нему, но мне нужно, чтобы часть кода автоматически нажимала на кнопку для меня, чтобы тест мог проверить правильность полученного результата. – Xirema

+0

Возможно, это может помочь http://stackoverflow.com/questions/2730044/closing-a-dialog-created-by-joptionpane-showoptiondialog – Massimo

ответ

0

Sikuli поддерживает поиск диалогов/кнопок и их автоматическое нажатие. Возможно, это поможет вам.

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