Хорошо, у меня следующая проблема, я написал простой клиент с графическим интерфейсом для приложения чата, и мне нужно попросить пользователя ввести его имя пользователя с помощью JOptionPane
InputDialog. Теперь это диалоговое окно должно появиться, когда сервер отправляет определенное уведомление. Таким образом, диалог начнется со второго потока, , а не из потока EDT.
Я попытался запустить диалог в потоке EDT, выполнив ...
EventQueue.invokeAndWait(new Runnable()
{
@Override public void run()
{
JOptionPane.showInputDialog(null, "Choose a username:",
"Username selection", JOptionPane.PLAIN_MESSAGE);
}
});
Заголовок моей функции, который содержит данный код и должен вернуть пользовательский ввод:
public String showNameInputDialog()
Моя проблема в том, что я не могу получить пользовательский ввод (не могу использовать локальную переменную) из диалога, потому что я запустил его во внутреннем классе. Итак, мой вопрос, есть ли возможность получить пользовательский ввод и запустить диалоговое окно еще в EDT?