Como eu executo o JOptionPane no EDT?
Eu estouainda tendo problemas com espaço em brancoJOptionPane
s. Baseado em pesquisa no SO e emJava Docs, isso obviamente tem algo a ver com não usar oEDT
. Minha pergunta é como exatamente oEDT
e seus métodos se aplicam aJOptionPane
? Por exemplo, a saída do erro do terminal deixa claro que oJOptionPane
abaixo não é executado noEDT
. O que está faltando especificamente, e como algo comoRunnable
caber?
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
Uma resposta sugeriu adicionarinvokeLater
. Isso não parece render muito bem no BlueJ, no entanto.
Também isEventDispatchThread () ainda está retornando o erro no terminal. Isso é simplesmente porque agora está no local errado?