IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Ajout column dynamiquement a JXTabe


Sujet :

Composants Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 47
    Par défaut Ajout column dynamiquement a JXTabe
    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);

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Un ajout de colonne est un changement de structure de la table, et non simplement de données, donc la méthode à appeler à la fin de ta méthode est fireTableStrutureChanged et non fireTableDataChanged.

Discussions similaires

  1. Ajouter objet dynamiquement via un bouton
    Par maxjaco dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 23/06/2006, 16h39
  2. [MFC] ajout checkbox dynamiquement
    Par moulefrite dans le forum MFC
    Réponses: 9
    Dernier message: 21/04/2006, 19h02
  3. [DOM] ajouter cellspacing dynamiquement
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/04/2006, 11h30
  4. [JPanel][pb refresh] ajout composnat dynamiquement
    Par Invité dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 10/04/2006, 17h00
  5. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo