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] non editable


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut [JTable] non editable
    bonjour,

    je voulais savoir comment faire pour mettre une JTable non editable, je ne trouve pas comment faire .
    J'ai remarqué que quand on double clik sur une ligne le texte change de font (oui car j'ai un font special sur la JTable) et que c'est à ce moment la qu'on peu éditer. Donc est ce qu'il faudrai mettre un listener sur la JTable (pour le double clik)?

    merci

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Il te suffit de surcharger la méthode isCellEditable(int row, int col) du modèle de ta JTable et lui mettre return false dedans, pour que rien ne soit éditable

  3. #3
    Membre confirmé Avatar de zozolh2
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 128
    Par défaut
    Bonjour ...
    tu peux faire comme ceci;

    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
    public class MaTableModel extends DefaultTableModel
     {
        public MaTableModel(){       
        }
     
        public boolean isCellEditable(int row, int col) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            if (col==3)  // numero de colonne non editable
            {
                return false;
            } else {
                return true;
            }
        }

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    J'ai pas très bien compris la question... . Tu veux empecher l'utilisateur de modifier la JTable ou tu veux pas que ton font change quand l'utilisateur modifie la JTable?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    je ne veut pas qu'on puisse la modifier

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    est ce que ce code rend toutes les cellules non editable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MaTableModel extends DefaultTableModel {
      public MaTableModel() {
      }
      public boolean isCellEditable(int row, int col) {
       // Note that the data/cell address is constant,
       // no matter where the cell appears onscreen.
     
        return false;
         }
     }
    pcq ça ne marche pas

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Tu as bien mis setModel(tonDefaultTableModel) sur ta JTable ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    ha non j'avais pas mis ça...

    mais now ça me fais une erreur sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myTable.getColumnModel().getColumn(0).setPreferredWidth(940);
    et l'erreur est
    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
    
    java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
    at java.util.Vector.elementAt(Vector.java:431)
    at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
    at be.microresearch.application.ListRep.<init>(ListRep.java:102)
    at be.microresearch.application.Frame$MyActionListener.actionPerformed(Frame.java:350)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
    at java.awt.Component.processMouseEvent(Component.java:5100)
    at java.awt.Component.processEvent(Component.java:4897)
    at java.awt.Container.processEvent(Container.java:1569)
    at java.awt.Component.dispatchEventImpl(Component.java:3615)
    at java.awt.Container.dispatchEventImpl(Container.java:1627)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
    at java.awt.Container.dispatchEventImpl(Container.java:1613)
    at java.awt.Window.dispatchEventImpl(Window.java:1606)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je pense que ca doit venir de la manière dont tu spécifie les colonnes à employer. Comment tu lui passes les noms de colonne ?

    Sinon tu peut aussi essayer avec un modèle un peu plus complet(cf ma pièce jointe)
    Fichiers attachés Fichiers attachés

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    j'essaie avec ton code, ce sera mieux...
    merci

    mais j'ai une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    java.lang.NullPointerException
    
    sur la ligne en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MyDefaultTableModel defaultTable = new MyDefaultTableModel(columnName,data2);
      
      myTable.setModel(defaultTable);
      scroll = new JScrollPane(myTable);
      myTable.setFont(new Font("Verdana", Font.BOLD, 12));
      myTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
      myTable.setRowHeight(30);
      myTable.getColumnModel().getColumn(0).setPreferredWidth(940);
      scroll.setBounds(20, 70, 960, 500);
      scroll.setForeground(Color.WHITE);

  11. #11
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Est ce que la JTable myTable est bien initialisé ? Vérifie qu'elle ne soit pas nulle

  12. #12
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    T'a un NullPointerException, ca veut dire que dans ta ligne tu essaye de manipuler un objet qui n'a pas été initialisé.

    ta ligne est "myTable.setModel(defaultTable);"

    Tu manipule donc myTable et defaultTable.
    Sachant que tu initialise defaultTable la ligne au dessus quel est l'objet qui n'a pas été initialisé ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    houlalala, la journée devient pénible, sorry pour la question complètement con...

    mais en tout cas ça marche super... un très grand merci

  14. #14
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Tu as fais quoi pour que ca marche ? C'était bien myTable qui n'était pas initialisé ?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    oui j'avais oublié de faire un new...

  16. #16
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Lol comme quoi, en java une erreur peut toujours venir d'un tout petit truc

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

Discussions similaires

  1. [JTable] rendre une cellule non editable après edition
    Par Phil29 dans le forum Composants
    Réponses: 3
    Dernier message: 31/08/2010, 19h00
  2. JTable avec cases non-editable
    Par Dine_Med dans le forum Composants
    Réponses: 6
    Dernier message: 14/05/2009, 18h51
  3. Cellules non editables de JTable
    Par adil1251985 dans le forum Composants
    Réponses: 1
    Dernier message: 31/05/2007, 20h13
  4. Cell d'une JTable non editable
    Par _kal_ dans le forum Composants
    Réponses: 5
    Dernier message: 14/12/2006, 00h38
  5. [Débutant] JTable non editable+DocumentListener
    Par nicotine002 dans le forum Composants
    Réponses: 9
    Dernier message: 04/01/2006, 00h48

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