Bonjour à tous,
Je réalise actuellement une application pour un stage en JAVA permettant de "monitorer" les incidents sur les voies ferrées dans une grande société nationale.. LOL
Le principe est de lire des fichiers de log et de les afficher dans des onglets distinguant les différents lieux de recueillement des informations. Jusque là tout va bien, j'ai fais une BDD permettant de récupérer les lieux et les fichiers correspondant et je sais les lire.
Mais voilà, j'ai crée une JTabbedPane et j'ajoute dynamiquement des onglets (extends JPanel) à l'aide de SwingWorkers, ok ça marche. Ces onglets possède tous une même JTextArea que je voudrais mettre à jour à l'aide des fichiers.
Voilà mon problème, je ne comprends pas comment je peux mettre à jour tous les JTextArea de manière indépendante, en effet quand je tente de les mettre à jour, c'est le JtextArea du dernier onglet qui se met à jour et les autres ne reçoivent rien..
Un p'tit bout de code pour comprendre :
Je sais pas si j'ai été assez clair mais honnêtement je suis un peu perdu...
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 public class View_Onglet extends javax.swing.JPanel { Onglet_SwingWorker s = new Onglet_SwingWorker(); class Onglet_SwingWorker extends SwingWorker<String, Object> { public Onglet_SwingWorker() { addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if ("progress".equals(evt.getPropertyName())) { jProgressBar1.setValue((int) evt.getNewValue()); } } }); } //Ici je récupère une string comprenant les infos du fichier @Override protected String doInBackground() throws Exception { Controller.Controller_TraitementFichier t = new Controller_TraitementFichier(View_Application.getJPanel(), "Montluçon"); return t.Traitement(); } @Override protected void done() { setProgress(100); try { //Je mets à jour le JTextArea jTextArea1.append(String.valueOf(get())); } catch (InterruptedException | ExecutionException ex) { Logger.getLogger(View_Onglet.class.getName()).log(Level.SEVERE, null, ex); } } } /** * Creates new form JPanel1 * * @param systeme Il prend en paramètre un système */ public View_Onglet(Model.Model_Systeme systeme) { initComponents(); Timer t = new Timer(2000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { interrompreOnglet.setText("Interrompre"); s.execute(); } }); } }); t.start(); interrompreOnglet.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (interrompreOnglet.getText().equals("Reprendre")) { s.execute(); } else { interrompreOnglet.setText("Reprendre"); s.cancel(true); } } }); } /** * * @param s */ public static void changeTexteArea1(String s) { jTextArea1.append(s); }
Merci de votre aide.
Partager