У меня есть процесс, подтверждающий сообщения от JOptionPane. Этот процесс вызывается из SwingUtilities.invokeLater (runnable), который находится внутри Actionlistener для JMenuItem. Код для работоспособного это:JOptionPane не исчезает, пока не появится следующая JOptionPane
SwingUtilities.invokeLater(new Runnable(){
public void run(){
MyClass c=new MyClass(file)
try {
c.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
this.finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
В MyClass есть этот метод:
private boolean userInput(){
String message="yes or no?";
JCheckBox checkbox = new JCheckBox("Do this for all.");
Object[] params={message,checkbox};
int n=JOptionPane.showConfirmDialog(null,params,"message",JOptionPane.YES_NO_OPTION);
boolean answer=(n==JOptionPane.YES_OPTION)?true:false;
if(checkbox.isSelected()){
nextQ=false;
nextA=answer;
}
return answer;
}
, которая называется много раз. Когда отображается сообщение JOptionPane, я нажимаю его кнопку (да/нет), но сообщение не исчезнет, пока не отобразится следующее сообщение. Что может быть проблемой? Связано ли это с методом invokeLater?
попытаться сделать reavlidate(); repaint() – CMPS
Идея без вашего SSCCE/MCVE, короткая работа, компилируемая, это не какая-то особая задача, – mKorbel
Опубликуйте [MCVE] (http://stackoverflow.com/help/mcve). Обязательно скопируйте код в новый проект * и убедитесь, что он компилируется и запускается, прежде чем публиковать его здесь. – user1803551