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 :

Edition des cellules d'une JTable en un clic


Sujet :

Composants Java

  1. #1
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut Edition des cellules d'une JTable en un clic
    je cherche à editer les cellule de ma jtable en un clic et non plus en double clic comme par défaut j'utilise cette classe
    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
    public class DeliveryOrderCellEditor extends AbstractCellEditor implements TableCellEditor {
     
        JTextField field = new JTextField();
        @Override
        public Component getTableCellEditorComponent(JTable jtable, Object value, boolean isSelected, int rowIndex, int vColIndex) {
            field.setText((String)value);
            return field;
        }
     
        @Override
        public Object getCellEditorValue() {
            return field.getText();
        }
     
        @Override
        public boolean isCellEditable(EventObject evt) {
            if (evt instanceof MouseEvent) {
                 System.out.println("un clic");
                int clickCount;
                clickCount = 1;
                return ((MouseEvent) evt).getClickCount() >= clickCount;
            }
            return true;
     
        }
     
        @Override
        public boolean shouldSelectCell(EventObject eo) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        @Override
        public boolean stopCellEditing() {
            String s = (String) getCellEditorValue();
            return super.stopCellEditing();
        }
     
        @Override
        public void cancelCellEditing() {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        @Override
        public void addCellEditorListener(CellEditorListener cl) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
     
        @Override
        public void removeCellEditorListener(CellEditorListener cl) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }
    et j'applique cette editeur de cellule comme ceci à une colonne de ma jtable(ordersJTable)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     TableColumn col = this.ordersJTable.getColumnModel().getColumn(ordersJTable.getColumnModel().getColumnIndex("Tracking_ID"));
                    col.setCellEditor(new DeliveryOrderCellEditor());
    je parviens bien à avoir ma jtexfields en un clic dans la colonne Tracking_ID et j'y écrit même du texte sauf que quand je change de ligne la valeur précédemment rentrée disparâit, elle n'est pas prise en compte alors que j'ai bien une méthode setValueAt

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    il vous manque certainement l'ordre indiquant à la JTable que les données ont changé.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @Override
    public void setValueAt( Object oValeur, int ligne, int colonne )
    {
    /.../
      fireTableRowsUpdated( ligne, ligne );
    /.../
    }
    Si vous n'avez pas besoin de contrôler le contenu saisi par l'utilisateur dans la cellule, vous pouvez simplement déclarer dans la JTable, que la cellule est modifiable.
    Dans ce cas, vous n'avez pas grand chose à coder pour obtenir ce que vous voulez.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pourquoi ne pas utiliser le DefaultTableCellEditor et sa méthode setClickCountToStart ?

Discussions similaires

  1. Fusionner des cellules dans une JTable
    Par Jecks dans le forum Composants
    Réponses: 3
    Dernier message: 15/11/2013, 17h34
  2. Réponses: 2
    Dernier message: 01/06/2011, 16h10
  3. Edition automatique d'une cellule d'une JTable au clavier
    Par Ynostel dans le forum Composants
    Réponses: 9
    Dernier message: 06/11/2008, 18h01
  4. Surligner des cellules d'une JTable
    Par bfb dans le forum Composants
    Réponses: 1
    Dernier message: 06/01/2006, 18h53
  5. Réponses: 1
    Dernier message: 02/12/2004, 11h51

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