allora, nell'actionPerformed richiamo questo metodo:
codice:
private void createConnection() {
try {
if (CheckConnection.check()) {
JDialog jd = new JDialog(this, true);
jd.add(BorderLayout.CENTER, new JLabel("...LOADING..."));
jd.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
jd.setSize(300, 75);
jd.setResizable(false);
jd.setLocationRelativeTo(this);
LoadingDialog ld = new LoadingDialog(jd);
ld.execute();
} else {
JOptionPane.showMessageDialog(null, "No connection");
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
nello swing worker:
codice:
public class ServiceWorker extends SwingWorker<Object, Object> {
private Service jsb;
private JDialog jd;
public ServiceWorker(JDialog jd) {
jsb = new Service();
this.jd = jd;
}
@Override
protected Object doInBackground() throws Exception {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jd.setVisible(true);
try {
jsb.launchService("all_books");
jsb.launchService("all_authors");
jsb.launchService("all_editors");
jsb.download(UrlAndPath.JSON_LIBRI);
jsb.download(UrlAndPath.JSON_AUTORI);
jsb.download(UrlAndPath.JSON_EDITORI);
jsb.download(UrlAndPath.GRAPH_AUTHORS);
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
});
return null;
}
@Override
protected void done() {
jd.setVisible(false);
}
}
così mi pare che vada.
dal punto di vista logico invece, andrebbe bene??