В настоящее время у меня есть диалоговое окно подтверждения, которое появляется, когда (после) нажата радиокнопка, если пользователь нажимает нет, тогда я должен вернуться к предыдущей (активной) радиокнопке.то, что я хочу сделать, это вывести диалоговое окно подтверждения ДО того, как на самом деле будет выбрана радиокнопка, поэтому, если пользователь нажимает кнопку «нет», мне не нужно ничего возвращать.это возможно / жизнеспособно?
вот как я сейчас это делаю:
for (Map.Entry<Integer, JRadioButton> entry : state.entrySet()) {
entry.getValue().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (JOptionPane.showConfirmDialog(entry.getValue(),
"Move device to position " + entry.getKey()
+ " ?", "Move Device?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) ==
JOptionPane.YES_OPTION) {
prev = entry.getValue();
controller.device(entry.getKey());
}else if(prev != null){
prev.setSelected(true);
}
}
});
}
обновление: я понял, что могу использовать ItemListener
вместо ActionListener
и таким образом яЯ знаю, покидаю ли я или вхожу в состояние, чтобы я мог оставить свой вопрос в отпуске, но следующий ввод произойдет до того, как я закончу спрашивать пользователя.Есть ли способ заставить отменить вход?задержать это ожидание на входе?