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 :

focus dans une cellule d'une JTable [Trucs & Astuces]


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 7
    Points : 9
    Points
    9
    Par défaut focus dans une cellule d'une JTable
    Bonjour tout le monde

    J'aimerai avoir le curseur qui apparait dans la cellule de ma JTable dès le premier clique que je fais (normalement je dois en faire 2 pour avoir le curseur).

    Savez vous ou je pourrais trouver du code faisant ça ????

    Merci

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Allez, c'est mon jour de bonté, je te donne le code (mais en cherchant un peu tout seul, j'y suis arrivé, donc pourquoi pas toi... ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    TaTable.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        Point p = e.getPoint();
        int col = taTable.columnAtPoint(p);
        int row = taTable.rowAtPoint(p);
        if (taTable.isCellEditable(row, col)) {
          taTable.editCellAt(row, col);
          taTable.getEditorComponent().requestFocus();
        }
      }
    });
    Voilà. Comme j'ai adapté depuis mon code et que j'ai retiré certains trucs (notamment le fait que si il y avait déjà du texte dedans, il est entièrement sélectionné), il faut tester cette adaptation...

    Bon courage,

    ced

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Désolé de pas avoir répondu plus tot mais j'étais en vacance.

    Merci pour ton code, c'est exactement ce que je cherchais.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Hello,

    Citation Envoyé par ced
    Comme j'ai adapté depuis mon code et que j'ai retiré certains trucs (notamment le fait que si il y avait déjà du texte dedans, il est entièrement sélectionné)
    je suis justement en train de chercher comment avoir le texte entièrement sélectionné une fois que l'on a le curseur dans la cellule.

    Es ce que quelqu'un a une piste à me proposer svp? Je nage un peu pour le moment.

    Merci d'avance

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Apres quelques recherches, je viens de trouver la solution. Suffit de rajouter cela après le requestFocus() du code de ced:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Component cell = taTable.getEditorComponent();
    if (cell instanceof JTextField)
    {
        ((JTextField) cell).selectAll();
    }
    J'me doutais que c'était pas bien compliqué... Fallait juste penser à passer par un JTextField!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Nouvelle question :

    Je souhaite savoir comment un utilisateur peut passer de l'édition du contenu d'une cellule à l'édition du contenu d'une autre cellule en 1 seul clic. A l'heure actuelle, en utilisant le listener de ced, il me faut 2 clics pour éditer une nouvelle cellule :

    - 1 pour "sortir" de l'édition de la cellule courante
    - 1 pour rentrer dans une autre cellule

    Or j'aimerai bien faire tout cela en 1 seul clic...

    Pour ce faire je voulais surcharger la méthode editingStopped(ChangeEvent e) du JTable en y ajoutant le code de ced. Mais le problème, c'est que je n'arrive pas a récupérer les coordonnées du dernier clic à partir de l'objet ChangeEvent e...

    Quelqu'un pour m'éclairer ?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 2
    Dernier message: 25/01/2011, 12h04
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Pb copier une valeur d'une textbox vers une cellule
    Par whykiki dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2007, 11h49
  5. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05

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