Bonjour
je galère avec addColumn() de mon AbstractTableModel
erreur java.lang.IndexOutOfBoundsException
voici mes méthodes de mon modèle
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
 
public class ModeltableauOffre extends AbstractTableModel
		{
 
 
			private static final long serialVersionUID = 1L;
			private Object[][] data;
			private String[] title;
			/*
			 public void paintComponent(Graphics g){
				    //Vous pourrez voir cette phrase à chaque fois que la méthode est invoquée !
				    System.out.println("Je suis exécutée ! ! !"); 
 
				} 
			*/
			/* protected Color colorForRow(int row) {
			        return (row % 2 == 0) ? GuiUtilities.ALTERNATE_ROW_COLOR : getBackground();
			    }*/
 
 
 
			public ModeltableauOffre(Object[][] data, String[] title)
			{
				this.data = data;
				this.title = title;
 
 
			}
 
			//Retourne le nombre de colonnes
			public int getColumnCount() {
				return this.title.length;
			}
 
 
			//Retourne le nombre de lignes
			public int getRowCount() {
				return this.data.length;
			}
 
 
 
			//Retourne la valeur à l'emplacement spécifié
			public Object getValueAt(int row, int col) 
			{
				return this.data[row][col];
			}
 
 
			public void setValueAt(Object value, int row, int col) {
				//On interdit la modification sur le colonne ou se trouve le baton parcque si je la laisse ell va devenir false!
				if(!this.getColumnName(col).equals("         ") )
					this.data[row][col] = value;
				fireTableCellUpdated(row, col);
 
			}
 
 
			//pur afficher les nom des titres	
			public String getColumnName(int col) {
					  return this.title[col];
				}
 
		    // les cellules ne sont pas editable dailleurs c par default
			public boolean isCellEditable(int row, int col){
				//On appelle la méthode getValueAt qui retourne la valeur d'une cellule
 
			//Et on fait un traitement spécifique si c'est un JButton
				//if(getValueAt(row, col) == "Modifier" || getValueAt(row, col) == "Ajouter")
					// 4 c'est colmne service et 7 c'est dateconnexion
				if (col == 0 || col == 1 || col == 2)
				return false;
					else return true;
 
			}
 
 
			public void addRow(Object[] data){
				int indice = 0, nbRow = this.getRowCount(), nbCol = this.getColumnCount();
 
				Object temp[][] = this.data;
				this.data = new Object[nbRow+1][nbCol];
 
				for(Object[] value : temp)
					this.data[indice++] = value;
 
 
				this.data[indice] = data;
				temp = null;
				//Cette méthode permet d'avertir le tableau que les données ont été modifiées
				//Ce qui permet une mise à jours complète du tableau
				this.fireTableDataChanged();
			}
 
			public void addColumn(Object[] data){
				int indice = 0, nbRow = this.getRowCount(), nbCol = this.getColumnCount();
 
				Object temp[][] = this.data;
				this.data = new Object[nbRow][nbCol+1];
 
				for(Object[] value : temp)
					this.data[indice++] = value;
 
 
				this.data[indice] = data;
				temp = null;
				//Cette méthode permet d'avertir le tableau que les données ont été modifiées
				//Ce qui permet une mise à jours complète du tableau
				this.fireTableDataChanged();
			}
 
			public DefaultCellEditor getCellEditor() {
				// TODO Auto-generated method stub
				return null;
			}
 
			public void clear() {
				// TODO Auto-generated method stub
				for(int i = modeleTableauOffre.getRowCount(); i > 0; --i)
					modeleTableauOffre.removeRow(i-1); 
			}
 
			private void removeRow(int position) {
				// TODO Auto-generated method stub
				int indice = 0, indice2 = 0, nbRow = this.getRowCount()-1, nbCol = this.getColumnCount();
				Object temp[][] = new Object[nbRow][nbCol];
 
				for(Object[] value : this.data){
					if(indice != position){
						temp[indice2++] = value;
					}
					indice++;
				}
				this.data = temp;
				temp = null;
				//Cette méthode permet d'avertir le tableau que les données ont été modifiées
				//Ce qui permet une mise à jours complète du tableau
				this.fireTableDataChanged();
			}
 
			public void getDefaultRenderer() {
				// TODO Auto-generated method stub
 
			}
 
			public void setEnable(boolean b) {
				// TODO Auto-generated method stub
 
			}
		}
et voici ma ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Object[] ligne = null;
modeleTableauOffre.addColumn(ligne);