Я пытаюсь создать GUI для своей программы. В этом конкретном графическом интерфейсе используется JOptionsPane с showOptionDialog. Я добавил панель к этой панели параметров, в которой есть некоторые прослушиватели действий, а также два списка и некоторые другие вещи, которые действительно не имеют значения для этого вопроса.ShowOptionDialog отменить вариант не работает
Довольно просто я хочу, чтобы мой showOptionDialog выполнял какое-либо действие, когда пользователь нажимает кнопку «Отменить». (Это будет в основном закончить программу, но это должно быть сделано определенным образом). Прямо сейчас, когда пользователь нажимает «отменить», программа продолжается, как если бы пользователь только закончил это диалоговое окно, но никаких действий не было предпринято. Я пытаюсь изменить переменную, если они нажимают кнопку «Отмена», что предотвратит запуск остальной части программы. Я протестировал с помощью System.out.println, чтобы узнать, действительно ли изменилось мое значение, и я обнаружил, что этот шаг не происходит вообще. Поэтому я хотел бы знать на основе этого кода, что я делаю неправильно. Что мне нужно сделать, чтобы код работал правильно, когда пользователь нажимает кнопку «Отменить»?
У меня нет больше кода для показа, поскольку моя программа очень большая, и я не могу изолировать эту ситуацию.
Заранее благодарим за помощь!
public static void displayGUI(){
int result = JOptionPane.showOptionDialog(null, getPanel(),"JOptionPane Example : ", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, new String[]{"Confirm","Create Return"}, "default");
if(result == JOptionPane.CANCEL_OPTION){
initialScreenDecisions="NONE";
MainWriter.finishedCounter=true;
System.out.println(MainWriter.finishedCounter);
while(MainWriter.entryDetails.size()>0){
MainWriter.entryDetails.remove(0);
}
while(output.size()>0){
output.remove(0);
}
}
}
* Эта часть кода не выполняется, даже если пользователь выбирает отменить:
if(result == JOptionPane.CANCEL_OPTION){
initialScreenDecisions="NONE";
MainWriter.finishedCounter=true;
System.out.println(MainWriter.finishedCounter);
while(MainWriter.entryDetails.size()>0){
MainWriter.entryDetails.remove(0);
}
while(output.size()>0){
output.remove(0);
}
}
вы пробовали распечатав значение 'result' посмотреть, что на самом деле вернулось? – steven35
@ steven35 Хотя это хороший совет на его поверхности, 'result' является значением int, которое используется как переименование, которое необходимо сравнить с различными константами JOptionPane, что делает некоторые очевидные значения для его значения несколько сложными. (Вам нужно прорваться через [Javadocs] (http://docs.oracle.com/javase/7/docs/api/constant-values.html#javax.swing.JOptionPane.CANCEL_OPTION), чтобы найти связанное с ним значение). Отсутствие фактических перечислений для 'JOptionPane' является одной из моих самых больших жалоб в отношении другого полезного класса. –
«результат» установлен на индекс нажатой кнопки, где кнопки создаются из массива объектов, переданного в (в данном случае «Подтвердить» и «Создать возврат»). – FredK