[JAVA applet] Vyvolání message dialogu v druhém vlákně
Mám kód který pro zpracování zadaných příkazů vytvoří nové vlákno a mám problém s tím, že pokud v novém vlákně nastane při zpracování chyba, tak ji chci zobrazit pomocí kódu
Kód:
JOptionPane.showMessageDialog(null,"Neznámý příkaz \""+prikaz+"\"",
"Chyba",
JOptionPane.ERROR_MESSAGE);
ale zobrazí se pouze s message dialog nazvaný "Chyba". Text ani tlačítko pro ukončení se nezobrazí. Tím se zastaví celý program protože se čeká, až se message dialog zavře. První vlákno na dokončení tohoto vlákna čeká pomocí metody join(). Zjistil jsem že pokud odstraním toto čekání nepo použiji join(5000) tak se hláška volaná z druhého vlákna zobrazí korektně nebo se korektně zobrazí po 5 sekundách.
Kód:
prikazy.nactiPrikazy(jTxtAreaPrikazovaRadka); //V této metodě se vytvoří nové vlákno nazvané "ZpracovaniPrikazu"
try {
if (prikazy.getZpracovaniPrikazu()!=null){
prikazy.getZpracovaniPrikazu().join(); //Čekání na dokončení vlákna
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Nevíte čím by to mohlo být? Někde zavolat repaint() aby se překreslil ten message dialog? Ale kde?
Re: [JAVA applet] Vyvolání message dialogu v druhém vlákně
neni naohodou prikazy v prvnim vlakne a prikaz v druhym vlakne jedna a tataz instance?
nejsem odbornik na streva javy, ale prijde mi, ze by si to mohl zamknout ten join a az po jeho provedeni se to odemkne a tim padem dokonci vypis. zkusil bych cvicne ze showmessagedialog odstranit 'prikaz', jestli to bude fungovat bez toho, tak tu zpravu zkonstruovat jinak (nejjednodussi prasarna - vykopirovat do jiny promeny) ...
Re: [JAVA applet] Vyvolání message dialogu v druhém vlákně
Proměnná v druhém vlákně je lokální proměnná. Nefunguje to ani když tam ten příkaz nedám.
Kód:
JOptionPane.showMessageDialog(null,"Neznámý příkaz",
"Chyba",
JOptionPane.ERROR_MESSAGE);