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 :

Comportement différent dans JTable


Sujet :

Composants Java

  1. #1
    Membre confirmé Avatar de scorbo
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 176
    Par défaut Comportement différent dans JTable
    Bonjour,

    J'ai récupéré une classe étendant JTextField qui ajoute l'autocomplétion à ce composant (http://www.java2s.com/Code/Java/Swin...eTextField.htm).
    Lorsque je le met directement dans un JPanel il fonctionne parfaitement. Par contre lors je le met dans le model d'un JTable, plus rien ne fonctionne. C'est comme si le JTable ajoutait une couche qui écrasait le comportement du composant que l'on met à l'intérieur. Ou comme si les évènements claviers était intercepté par le JTable et n'arrivait plus au composant intérieur.
    Faut-il créer son propre TableModel pour résoudre le problème ?

    Merci

  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
    Il ne faut pas mettre de composants dans la JTable, juste des données.

    La modification de l'aspect des cases d'une JTable se fait via le couple Renderer(pour le rendu de la cellule)/Editor (pour la partie édition de la cellule).

    Je te conseille fortement la lecture du tutoriel suivant pour tout ce qui concerne la JTable et la façon correcte de l'utiliser.

    http://baptiste-wicht.developpez.com.../swing/jtable/

    En particulier les points 5 et 6 qui correspondent à ce que tu cherches.

  3. #3
    Membre confirmé Avatar de scorbo
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 176
    Par défaut
    Merci pour ta réponse.

    J'avais déjà manipulé les tableaux (modèle et renderer) mais jamais les cellEditor et c'est ce qu'il me manquait.
    J'ai donc pris la première colonne et fait un setCellEditor dessus avec mon cellRenderer qui ne fait que créé un DefaultCellEditor avec comme argument le JTextFieldAutocompletion. Ça fonctionne très bien (je retrouve le fonctionne de l'autocomplétion) sauf que graphiquement la ligne est illisible durant l'édition. Une fois validé, l'écriture redevient correct. Tout comme dans la combobox dans le tuto.

    Est-ce parce que durant l'édition, le jtable met le jtextfield dedans et une fois l'édition terminé il reprend seulement la donnée ?


    Edit: je viens de m'apercevoir que oui. En commençant l'édition de la cellule, il y a un appel à getTableCellEditorComponent et en sortant un appel à getCellEditorValue. C'est donc bien le dessin du JTextField qui m'embête

  4. #4
    Membre confirmé Avatar de scorbo
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 176
    Par défaut
    J'ai trouvé, par hasard, la réponse ici http://www.javalobby.org/java/forums/t43671.html

    Il faut enlever la bordure du JTextField ou du JComboBox qui est utilisé durant l'édition.

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

Discussions similaires

  1. [AC-2010] Comportement de DateDiff différent dans la console et dans un programme VBA
    Par laurent_42 dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/01/2014, 14h34
  2. Réponses: 2
    Dernier message: 30/01/2012, 16h48
  3. Réponses: 1
    Dernier message: 10/09/2009, 19h38
  4. Réponses: 3
    Dernier message: 20/06/2007, 23h18

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