Bonjour les gens... et bonne année!
J'ai une aplication Swing (qui suit le patter MVC) et une fenêtre Browser qui parcourt tous mes items appelés Variante. Et un form d'édition d'un item Variante. Lorsque je sauvegarde une Variante (via le boutton Save de la form d'edition), je veux recharger toutes mes Variantes (donc recharger le model et la view de Browser). Mais tout ceci prend pas mal de temps (sauvegarder les infos et récupérer toutes les variantes depuis le serveur).
Je voudrais donc recharger le modèle et la vue dans une tâche de fond, mais je ne sais pas vrmt comment utiliser SwingUtilies.invokeLater(), ou SwingWorker, ni exactement ou les places pour que mon application ne "freeze pas".
Voici des bouts de code de mon app:
Le listener sur mon button Save
La méthode reloadBrowser de BrowseVariantesAction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 saveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { VarianteDetail variante = new VarianteDetail(); if (validateData("variante.validation.error")) { saveData(variante); try { if (variante.getId() != null) { BrowseVariantesAction.getModel().updateItem(variante); } else { BrowseVariantesAction.getModel().createItem(variante); } BrowseVariantesAction.reloadBrowser(); parentFrame.dispose(); JOptionPane.showMessageDialog(OpalysClient.getMainFrame().getContentPane(), I18nSupport.tr("variante.edition.save.successfull"), I18nSupport.tr("success"), JOptionPane.INFORMATION_MESSAGE); } catch (OpalysBusinessException e) { Utils.handleBusinessException(e); } catch (AccessDeniedException e) { Utils.handleAccessDeniedException(e); } catch (Exception e) { Utils.handleServerError(e); } } } });
Donc on recharge d'abord le modèle, puis on recharge ensuite la vue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static void reloadBrowser() { try { getModel().reloadItems(); getView().reloadData(); } catch (Exception e) { } }
Merci d'avance pour votre aide et bon weekend
Partager