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 :

[JTable] Problème avec la méthode setValueAt


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Par défaut [JTable] Problème avec la méthode setValueAt
    Bonjour,

    J'ai une JFrame dans laquelle se trouvent un JComboBox et un JTable. Je veux faire en sorte que, quand l'utilisateur sélectionne un item de la JComboBox, le nom de cet item s'affiche dans mon JTable.

    Pour mon tableau j'ai créé un modèle dans lequel j'ai ajouté la méthode setValueAt. Voici la classe complète :

    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
     
    	public class ModeleTable extends AbstractTableModel {
    		private static final long serialVersionUID = 1L;
    		Object donnees[][];
    		String titres[];
    		TableModel model;
     
    		public ModeleTable(Object donnees[][], String titres[]) {
    			this.donnees = donnees;
    			this.titres = titres;
    		}
     
    		public int getColumnCount() {return titres.length;}
     
    		public int getRowCount() {return donnees.length;}
     
    		public String getColumnName(int col) {return titres[col];}
     
    		public Object getValueAt(int row, int col)  {return donnees[row][col];}
     
    		public boolean isCellEditable(int row, int col) { return false;}
     
    		public void setValueAt(Object value, int row, int col) {
    			donnees[row][col] = value;
    			fireTableCellUpdated(row,col);
    		}
    	}
    Pour afficher la valeur de l'item sélectionné dans la JComboBox, je lui ajoute un ActionListener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class ItemAction2 implements ActionListener {
    	public void actionPerformed(ActionEvent e) {
    		ModeleTable.setValueAt(combo.getSelectedItem(), 0, 1);
    	}
    }
    Pour info, voilà mon tableau qui utilise le modèle que j'ai créé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Object[][] donnees = {{"",""}}; 
    String[] titresColonnes = {"Titre1","Titre2"};
    ModeleTable modele = new ModeleTable(donnees, titresColonnes);
    tableauRecapitulatif = new JTable(modele);
    tableauRecapitulatif.setPreferredScrollableViewportSize(new Dimension(640,50));
    tableauRecapitulatif.addMouseListener(new Navigation(tableauRecapitulatif));
    JScrollPane jsp = new JScrollPane(tableauRecapitulatif);
    Mon problème c'est qu'à l'exécution, j'ai une erreur au niveau de mon ActionListener, au niveau de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ModeleTable.setValueAt(combo.getSelectedItem(), 0, 1);
    Ci dessous l'erreur générée :
    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
     
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at esgi.tdb.fenetres.FenetreDeuxParametres$ItemAction2.actionPerformed(FenetreDeuxParametres.java:140)
    	at javax.swing.JComboBox.fireActionEvent(Unknown Source)
    	at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    	at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    	at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
    	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Auriez vous une idée de comment résoudre ce problème ? Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Par défaut
    Je ne sais pas si c'est ça mais je pense qu'il faudrait que tu fasses ton setValueAt sur ta table et non sur ton model.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    l'algo du code est bon. Par contre la ligne de ton listener est suspecte.

    L'appel du constructeur se fait sur la variable modele. Dans le listener tu l'appelle sur la variable ModeleTable (par ailleurs il vaut mieux eviter les Maj pour la premiere lettre des variables)

    ModeleTable.setValueAt(combo.getSelectedItem(), 0, 1);

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Par défaut
    Merci à vous beuhnoix et julie4207.

    Effectivement le problème c'est que je faisais le setValueAt sur le modèle et pas sur mon tableau.

    C'est bon maintenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTable] Problème avec getValueAt
    Par flames dans le forum Composants
    Réponses: 2
    Dernier message: 24/05/2006, 22h27
  2. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  3. [JTable] Problème avec le modèle
    Par etiennegaloup dans le forum Composants
    Réponses: 2
    Dernier message: 20/09/2005, 16h25
  4. Problème avec la méthode pack()
    Par tomca dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 10h58
  5. [JTable] Problème avec la couleur de fond
    Par ellocin dans le forum Composants
    Réponses: 5
    Dernier message: 13/09/2005, 23h07

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