Bonjour,

Je suis face à un problème que je n'arrive pas à résoudre.
J'ai suivi ce tuto http://baptiste-wicht.developpez.com.../swing/jtable/ pour implémenter un jtable.
Tout fonctionne correctement, mais maintenant je voudrais ajouter des lignes à partir d'autres classes.
Le problème est que les données sont bien ajoutées dans mon arrayList, sauf que mon panel (ou ma table) n'est pas rafraîchie donc l'affichage n'est pas fait.

Voici mes deux classes:

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
public class PanneauTicket extends JPanel implements ActionListener  {
 
	private AjoutDynamique Ajout = new AjoutDynamique();
	private JTable tableau = new JTable(Ajout);
	private JScrollPane scroll = new JScrollPane(tableau);
 
	public PanneauTicket ()
	{
		this.setBorder(BorderFactory.createTitledBorder("Ticket"));
		this.setLayout(new BorderLayout());
 
	    tableau.getColumnModel().getColumn(0).setMaxWidth(50);
	    tableau.getColumnModel().getColumn(1).setMaxWidth(200);
	    tableau.getColumnModel().getColumn(2).setMaxWidth(50);
	    tableau.setRowHeight(20);
 
	    // Permet de centrer le texte dans les cellules
	    DefaultTableCellRenderer custom = new DefaultTableCellRenderer();
	    custom.setHorizontalAlignment(JLabel.CENTER);
	    for (int i=0 ; i<tableau.getColumnCount() ; i++)
	    tableau.getColumnModel().getColumn(i).setCellRenderer(custom); 
 
	    scroll.setPreferredSize(new Dimension(250,290));
	    this.add(scroll, BorderLayout.CENTER);
 
	}
 
	public PanneauTicket(String nb1, String nb2, String nb3)
	{
		Ajout.addArticle(nb1, nb1, nb3);
	}
 
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		Ajout.fireTableDataChanged();
	}
}
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
public class AjoutDynamique extends AbstractTableModel
 
{
	public static List<Articles> Article = new ArrayList<Articles>();
 
	private final String[] entetes = {"Quantité", "Article", "Prix"};
 
	@Override
	public int getColumnCount() {
		// TODO Auto-generated method stub
		return entetes.length;
	}
 
	@Override
	public int getRowCount() {
		// TODO Auto-generated method stub
		return Article.size();
	}
    public String getColumnName(int columnIndex) {
        return entetes[columnIndex];
    }
 
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		// TODO Auto-generated method stub
		 switch(columnIndex){
         case 0:
             return Article.get(rowIndex).getQuantite();
         case 1:
             return Article.get(rowIndex).getNomArticle();
         case 2:
             return Article.get(rowIndex).getPrixArticle();
         default:
             return null; //Ne devrait jamais arriver
     } 
	}
 
	public void addArticle(String Quantite, String article, String prix) {
 
		Article.add(new Articles(Quantite, article, prix));
		fireTableRowsInserted(Article.size() -1, Article.size() -1);
		fireTableDataChanged();
		AffichePrixTotal();
	}
 
   public void removeArticle(int rowIndex) {
        Article.remove(rowIndex);
        fireTableRowsDeleted(rowIndex, rowIndex);
        AffichePrixTotal();
    }
 
   public void AffichePrixTotal()
   {
		float tempo=0;
		float PrixTotal=0;
 
		if(Article.size()==0)
		{
			PrixTotal = 0;
			PanneauPrix.prix.setText(PrixTotal+"€");
		}
		else
		{
			for(int i=0; i<Article.size();i++) // Boucle pour récupérer la valeure du prix dans chaque ligne du tableau
			{       
				String tempoString = this.getValueAt(i, 2).toString();
				tempo = Float.valueOf(tempoString.trim()).floatValue(); 
				PrixTotal += tempo; // Additionne chaque valeure de la colonne prix (de la ligne i) au prix total  
			}
			PanneauPrix.prix.setText(PrixTotal+"€");
		}
   }
}
Pour ajouter des données, je fais un:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
new PanneauTicket("2","Bannanes","4");
Le code fonctionne si j'ajoute un écouteur à un bouton dans ma classe PanneauTicket. Et comme j'ai pas mal de boutons qui peuvent ajouter des données dans ma jtable, j'aimerai éviter cette méthode!
Y'a il un autre moyen de rafraichir ma jtable? J'ai bien sûr essayé avec un this.repaint() ou un Ajout.fireTableDataChanged(); dans mon constructeur surchargé mais rien ne change!