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 :

Problème édition de cellules


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Par défaut Problème édition de cellules
    Bonjour à tous !

    Alors voilà, j'ai un pitit soucis... J'ai une JTable, qui dépend d'un AbstractTableModel. Dans cette JTable, une seule colonne doit pouvoir être modifiée rapidemment, celle des quantité.

    Donc je sais qu'il faut surcharger la fonction "isCellEditable(int row, int column)", ce qui a été fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public boolean isCellEditable(int row, int col){
    		return col == 8 ? true : false;
        	//la colonne quantité est en 8ème position
    	}
    Par ailleurs, j'ai vu sur un site qu'il fallait surcharger une autre méthode afin que le model tienne compte de ces changements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void setValueAt(String object, int row, int column) {    	
    System.out.println("SET VALUE AT row : " + row + ", column : " + column);
        	if(column == 8)
        	{
        		this.data[row][column] = object;
        		fireTableCellUpdated(row, column);
    //je sais pas si ça sert à quelque chose, dans le doute, je l'ai mis
        	}
        }
    Le sysout ne sers qu'à vérifier à quel moment cette fonction est appelée.

    Et en fait, elle n'est jamais appelée

    Pendant l'exécution, on peut cliquer et modifier le texte, mais au moment de quitter la case (clic ailleurs ou bien "entrée") la cellule revient à son contenu de départ.

    Donc voilà, m'a question, comment prendre en compte ces changements ???


    Par ailleurs, je vous donne le code de l'AbstractTableModel uniquement, je ne pense pas que les autres classes puissent influencer :
    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
    package vues;
     
    import java.text.DecimalFormat;
     
    import javax.swing.table.AbstractTableModel;
     
    import modeles.articles.variables.Article;
     
    public class TableDevis extends AbstractTableModel {
     
    	private String[][] data;
    	private String[] title;
     
    	public TableDevis()
    	{
    		this.title = new String[]{"... plusieurs colonnes ... ", "Quantité","... plusieurs colonnes ... "};
    		this.data = new String[0][this.title.length];
    	}
     
    	public int getColumnCount()
    	{
    		return this.title.length;
    	}
     
    	public int getRowCount()
    	{
    		return this.data.length;
    	}
     
    	public String getValueAt(int row, int column)
    	{
    		System.out.println("GET VALUE AT row : " + row + ", column : " + column);
    		return this.data[row][column];
    	}
     
    	public void setValueAt(String object, int row, int column)
    	{
    		System.out.println("SET VALUE AT row : " + row + ", column : " + column);
    		if(column == 8)
    		{
    			this.data[row][column] = object;
    			fireTableCellUpdated(row, column);
    		}
    	}
     
    	public boolean isCellEditable(int row, int col){
    		return col == 8 ? true : false;
    	}
     
    	public String getColumnName(int col) {
    		  return this.title[col];
    	}
     
        public Class<?> getColumnClass(int columnIndex) {
                return String.class;
    	}
     
    	//... autre fonctions non surchargées, 
    	//ajoutant//supprimant des données à data
    }
    Si vous pouvez m'aider, n'hésitez pas surtout

    P'is si vous voulez que j'affiche plus de code, prévenez moi

    Merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void setValueAt(String object, int row, int column) {    	
    System.out.println("SET VALUE AT row : " + row + ", column : " + column);
        	if(column == 8)
        	{
        		this.data[row][column] = object;
        		fireTableCellUpdated(row, column);
    //je sais pas si ça sert à quelque chose, dans le doute, je l'ai mis
        	}
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void setValueAt(Object object, int row, int column)

    et certainement un @overide qui se promène au dessus

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Par défaut Niquel

    effectivement ça fonctionne...

    Mais pourrais-tu m'expliquer pourquoi ça ne fonctionnais pas avec "String" ?

    C'est parce que tu coup c'était pas la bonne fonction qui était appelé par défaut, c'est ça ?

    En tout cas

  4. #4
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 69
    Par défaut
    Citation Envoyé par Nafnlaus Voir le message
    C'est parce que tu coup c'était pas la bonne fonction qui était appelé par défaut, c'est ça ?
    Ouep, la méthode par défaut appeler est avec "Object"
    Du coup quand tu modifies une valeur, il appelle la méthode avec Object qui n'était pas redéfini

    de rien, ça fait plaisir d'aider

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

Discussions similaires

  1. Problème édition cellule d'un JTable
    Par Poum19 dans le forum Composants
    Réponses: 2
    Dernier message: 16/04/2012, 16h23
  2. [VBA-E] Problème d'offset cellule
    Par GI_GI dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/01/2007, 10h47
  3. [VBA - Excel] Problème de deux cellules sur l'evenement OnChange
    Par champmart dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/01/2007, 17h06
  4. Problème édition des liens?
    Par zuzuu dans le forum C++
    Réponses: 2
    Dernier message: 20/11/2006, 21h08
  5. [VBA] problème choix de cellule dans feuille excel
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/02/2006, 10h48

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