ok mi sembra di aver risolto:
codice:
public class GenericDialog extends JDialog {
public GenericDialog(JFrame parent, String title, String message) {
super(parent, title, true);
setLocationRelativeTo(parent);
JPanel messagePane = new JPanel();
messagePane.add(new JLabel(message));
getContentPane().add(messagePane);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pack();
setModal(true);
}
}
evento del jbutton:
codice:
btnConnect.addActionListener((ActionEvent e) -> {
final GenericDialog loading = new GenericDialog(this, "", "Loading...");
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
createConnection();
return null;
}
@Override
protected void done() {
loading.dispose();
}
};
worker.execute();
loading.setVisible(true);
try {
worker.get();
} catch (InterruptedException | ExecutionException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
});
la cosa che mi mancava era il metodo done().
così funziona, ma si accettano consigli ovviamente!!