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 :

donner le focus a une cellule


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut donner le focus a une cellule
    Bonjour.....

    afin d'optimiser mon programme, je voudrais donner le focus a une cellule à l'ouverture de mon programme.
    Rien de transcendant, je me dis....Mais aprés quellesques recherches, j'ai trouvé comment faire en theorie...
    MAis cela ne marche pas et je ne vois pas pourquoi?

    j'ai un petit mousselistener dont je m'inspire (pour ne cliquer qu'une fois et non 2 pour avoir le focus de la cellule)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void initclictable(){
     
        jTable1.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        Point p = e.getPoint();
        int col = jTable1.columnAtPoint(p);
        int row = jTable1.rowAtPoint(p);
        if (jTable1.isCellEditable(row, col)) {
          jTable1.editCellAt(row, col);
          jTable1.getEditorComponent().requestFocus();
        }
      }
        });
        }
    ça, ça marche bien, mais pour donner le focus à ma cellule, j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     jTable1.requestFocus();
            jTable1.editCellAt(0, 2);
            jTable1.getEditorComponent().requestFocus();
    j'ai rajouté la premiere ligne , mais ça ne marche pas plus, je n'arrive pas à donner le focus à ma cellule pour que l'utilisateur n'ait plus qu'a taper son texte.

    je vous remercie de m'indiquer vers ou chercher la solution.

  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 faut passer par la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    editCellAt(int row, int col)
    de ta JTable.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    Je pense que je me suis mal exprimé.....

    C'est bien la bonne méthode pour donner le focus à ma cellule puisque ça me dit bien que la cellule à eu le focus mais ce que je voudrais c'est que mon curser soit dans ma cellule pour que l'utilisateur puisse taper du texte sans avoir à cliquer sur la cellule.....
    Et la, même si j'ai le focus, j'ai pas de curser...

  4. #4
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    avec un robot :

    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
     
          if (jXTable1.getModel().isCellEditable(nucol, nuli)) {                   
                    double tableX = jXTable1.getLocationOnScreen().getX();
                    double tableY = jXTable1.getLocationOnScreen().getY();
                    double celluleX = jXTable1.getCellRect(nuli, nucol, true).getCenterX();
                    double celluleY = jXTable1.getCellRect(nuli, nucol, true).getCenterY();                
                    int x = (int)(tableX+celluleX);
                    int y = (int)(tableY+celluleY);         
                        Robot rob = null;
                        try {
                          rob = new Robot();
                        }
                        catch (AWTException ex) {
                            ex.printStackTrace();
                            JOptionPane.showMessageDialog(null, " except robo ");                 
                        }                                            // pour sélectionner la cellule et voir le caret : trois clic
                                                                  // bouton gauche, voir Constant Fireld Values dans l'aide
                        rob.mouseMove(x, y) ;
                        for(int i = 0; i < 3; i++){                       
                           rob.mousePress(16);   
                           rob.mouseRelease(16); 
                        }
                }
            }
    ajuster le truc pour ton cas...

    PS si quelqu'un a mieux, je suis preneur...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    Merci bien de ta réponse

    ça marche pas en direct:j[CODEava.awt.IllegalComponentStateException: component must be showing on the screen to determine its location][/CODE]


    mais si je le mets dans un bouton, ça marche ...

    Je devrais réussir à faire ce que je veux.

    Encore mercin à vous.

    Bonne journée.

    ps: je metrais résolu ce soir , défois qu'il y ait d'autres réponses qui interesseraient aussi fraco

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Par défaut
    Bonjour

    Si tu veux forcer l'edition d'une cellule et lui donner le focus, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jTable1.editCellAt(row, col);
    jTable1.getEditorComponent().requestFocusInWindow();
    Ca fonctionne chez moi, et c'est bien plus propre (et plus simple) qu'un robot qui fait deplacer la souris et cliquer sur la cellule.

    Rémi

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

Discussions similaires

  1. focus dans une cellule d'une JTable
    Par coil dans le forum Composants
    Réponses: 5
    Dernier message: 07/07/2010, 17h15
  2. Réponses: 0
    Dernier message: 14/05/2010, 12h00
  3. [D5] : DBGrid : Donner le focus à une cellule
    Par micoudev dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/08/2006, 21h03
  4. excel -> test lors de la perte du focus d'une cellule
    Par greg778 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 26/09/2005, 17h26
  5. Focus sur une cellule spécifique d'un DBGrid
    Par danbern dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/11/2004, 19h04

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