Bonjour,

Je developpe une application client/serveur. L'application cliente affiche une JTable
avec deux colonnes

je recoit un vecteur de vecteurs depuis le serveur qui me permet de mettre à jour la JTable chez les clients

voici l'erreur que j'obtiens aléatoirement :

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
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
        at java.util.Vector.elementAt(Vector.java:427)
        at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
        at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderRenderer(BasicTableHeaderUI.java:648)
        at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderHeight(BasicTableHeaderUI.java:692)
        at javax.swing.plaf.basic.BasicTableHeaderUI.createHeaderSize(BasicTableHeaderUI.java:721)
        at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:752)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1627)
        at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:78)
        at java.awt.Container.preferredSize(Container.java:1616)
        at java.awt.Container.getPreferredSize(Container.java:1601)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1629)
        at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:702)
        at java.awt.Container.layout(Container.java:1432)
        at java.awt.Container.doLayout(Container.java:1421)
        at java.awt.Container.validateTree(Container.java:1519)
        at java.awt.Container.validate(Container.java:1491)
        at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:639)
        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:127)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
voici le panel qui contient cette JTable
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
package IHM;
 
import java.util.Vector;
 
import Chat.*;
import javax.swing.*;
import javax.swing.table.TableColumn;
 
public class PanListeAttente extends JPanel {
 
	private JTable jtListeAttente = new JTable();
	private JScrollPane jsp = new JScrollPane();
 
	private Vector listeTitres = new Vector();
	private Vector listeDemandeurs = new Vector();
	private TableModelAttente model;
 
 
	public PanListeAttente() {
 
		super();
 
		//--on initialise la JTable
		listeTitres.addElement("pseudo");
		listeTitres.addElement("motif");
		MajTab(jtListeAttente,listeDemandeurs);
 
		//--Reglage de la liste d'attente
		jtListeAttente.setAlignmentX(0.4F);
		jsp.setViewportView(jtListeAttente);
 
		//--Mise en place des elements du panel
		this.setBorder(BorderFactory.createTitledBorder("Liste d'attente"));
		GroupLayout layout = new GroupLayout(this);
		this.setLayout(layout);
 
		layout.setHorizontalGroup(
				layout.createParallelGroup(GroupLayout.Alignment.LEADING)
				.addGroup(layout.createSequentialGroup()
						.addContainerGap()
						.addComponent(jsp, GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE)
						.addContainerGap())
		);
 
		layout.setVerticalGroup(
				layout.createParallelGroup(GroupLayout.Alignment.LEADING)
				.addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
						.addContainerGap()
						.addComponent(jsp, GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)
						.addContainerGap())
		);
 
	}
 
	//--Methode qui permet de mettre à jour la JTable de liste d'attente
	private void MajTab(JTable table,Vector donnees) {
        model = new TableModelAttente(listeTitres, donnees);
        table.setModel(model);
        table.validate();
	}
 
	//--Getters et Setters
	public void setListe(Vector liste) {
		MajTab(jtListeAttente,liste);
	}
 
	public JTable getJTable() {
		return jtListeAttente;
	}
}
la methode "MajTab" est appelée par une autre classe (une classe qui recoit le vector de vectors du serveur)
le contenu de la jtable est juste ! le vecteur de vecteurs n'a pas d'erreurs

et voici le modele de ma jtable :

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
 
package IHM;
 
import javax.swing.table.*;
import java.util.*;
 
 
public class TableModelAttente extends AbstractTableModel{
 
	private Vector header=new Vector();
	private Vector donnees=new Vector();
 
	private Class[] types = new Class [] {
			String.class, String.class
	};
    private boolean[] canEdit = new boolean [] {
		false, false
    };
 
	public TableModelAttente(){
		super();
	}
 
	public TableModelAttente(Vector header,Vector donnees){
		super();
		this.header=header;
		Maj(donnees);
	}
 
	public TableModelAttente(Vector donnees){
		Maj(donnees);
	}
 
	public void Maj(Vector donnees){
		this.donnees.clear();
		this.donnees=donnees;
		fireTableDataChanged();
	}
 
	public Class getColumnClass(int columnIndex) {
		return types [columnIndex];
	}
 
	public int getRowCount() {
		return donnees.size();
	}    
 
    public int getColumnCount() {
    	return header.size();
    }
 
    public boolean isCellEditable(int row, int col) {
    	return canEdit [col];
    }
 
    public String getColumnName(int col){
    	return (String) header.get(col).toString();
    }
 
	public Object getValueAt(int row, int col) {
		return (String)((Vector)(donnees.get(row))).get(col);
	}
 
 
               //Permet de tout éffacer
	/*public void clear () {
		for (int i = 0;i < header.size();i++)
			donnees.clear();
		fireTableDataChanged();
	}*/
 
}
je n'arrive pas a savoir d'ou provient cette erreur !
meme si ça ne fais aucunement planter l'application... je prefererais ne plus avoir ce message

ça serait vraiment sympa si quelqu'un pouvait m'aider a résoudre le bug..

merci ++