Z tego co pamiętam to w javie nie nalezy operowac na komponentach Swing w zadnym innym watku niz watek dystrybucji zdarzen wiec nalezy uzyc konstrukcji EventQueue.invokeLater(new Runnable() { public void run() { //operacje na komponencie Swing } }). Co też u mnie jest w klasie Watek w metodzie run(). **Zastanawiam się natomiast czy powinienem również użyć konstrukcji EventQueue.invokeLater w metodzie metoda() dla jOptionPane2.showMessageDialog, bo metoda() jest wywoływana w klasie Watek w run()?? **
public class DesktopApplication2View extends FrameView {
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
Runnable r = new Watek();
Thread t = new Thread(r);
t.start();
}
private void metoda() {
try {
.......
}
catch (IOException e) {
jOptionPane2.showMessageDialog(null, e, "Błąd", JOptionPane.ERROR_MESSAGE);
}
}
class Watek implements Runnable
{
public void run()
{
metoda();
EventQueue.invokeLater(new Runnable()
{
public void run()
{
jButton1.setEnabled(true);
}
});
}
}
}