У меня до сих пор возникают проблемы с пустыми JOptionPane
. Судя по исследованиям в SO и Java Docs, это, очевидно, как-то связано с тем, что не используется расширение EDT
. Мой вопрос в том, как именно EDT
и его методы применяются к JOptionPane
? Например, вывод ошибки терминала совершенно ясно показывает, что JOptionPane
ниже не выполняется на EDT
. Чего конкретно не хватает и как что-то вроде Runnable
вписывается?
import javax.swing.*;
public class PaneDemo
{
public static void main(String[] args)
{
final String[] TEXT ={
//message
"Hello, World!",
//title
"Greeting"};//end TEXT
showMyPane(TEXT);
}//end main
public static void showMyPane(final String[] TEXT)
{
JOptionPane.showMessageDialog(null, TEXT[0], TEXT[1],
JOptionPane.INFORMATION_MESSAGE);
if(!SwingUtilities.isEventDispatchThread())
{
System.err.println("Err: GUI failed to use EDT.");
}//end if(!SwingUtilities.isEventDispatchThread())
}//end showMyPane
}//end class PaneDemo
Ответ предложил добавить invokeLater
. Однако это не очень хорошо отображается в BlueJ.
Также isEventDispatchThread() по-прежнему возвращает ошибку в терминале. Это просто потому, что он сейчас находится не в том месте?