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 :

[JTextField] Problème de focus


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut [JTextField] Problème de focus
    Bonjour, j'ai dans mon panel, un jTestField de nom 'no'. J'aimerais, lorsque ce panel s'affiche, que le curseur de la sourie soit sur ce champs. J'ai essayé de faire no.setFocusable(true) mais ca ne marche pas.
    Savez vous comment je peux faire?
    Merci d'avance


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    presque

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    Bah non, j'ai essayé ca ne marche pas. C'est bizarre...

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    chez moi marche très bien...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    requestFocus je crois que c'est pour le clavier... C'est comme une utilisation de TAB. Pour la sourais je sais pas si ça existe mais tu dois pouvoir faire le code "à la main".

  6. #6
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Le curseur de la souris, c'est bien là ou l'utilisateur va taper au clavier :

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    oui, je voudrais que la barre clignotante du curseur se positionne dans le champs texte sans que l'utilisateur n'ai à cliquer dedant

  8. #8
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Et bien normalement avec no.requestFocus(), ça devrait marcher.

    Si c'est pas le cas, tu nous mets un bout de code, qu'on voit ce qui cloche...

    [Edit] au temps pour moi, dans mon appli, le focus est déjà sur le champ texte, même sans le requestFocus()...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Je sais pas si je suis clair mais dans les programmes courants le curseur vertical permettant l'ecriture peut etre obtenu sans cliquer avec la souris avec la touche TAB. Je pensais qu'elle voulait que la souris elle meme se deplace jusqu'au JtextField.
    Mais en repondant bien au probleme, ta reponse est correcte.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    J'ai une frame avec une barre de boutons et j'ai l'impression que c'est cette barre qui fait que la fonction n'agit pas. Je vous envoie la classe exécutable avec un focus qui ne marche pas :

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    import java.awt.*;
    import javax.swing.*;
    import com.borland.jbcl.layout.*;
    import javax.swing.JFrame;
    import java.awt.*;
    import javax.swing.*;
    import com.borland.jbcl.layout.*;
    import java.awt.*;
    import javax.swing.*;
    import com.borland.jbcl.layout.*;
    import javax.swing.JFrame;
     
     
    public class Cadre1 extends JFrame {
      JPanel contentPane;
      JMenuBar jMenuBar1 = new JMenuBar();
      JMenu jMenuFile = new JMenu();
      JMenuItem jMenuFileExit = new JMenuItem();
      JMenu jMenuHelp = new JMenu();
      JMenuItem jMenuHelpAbout = new JMenuItem();
      JToolBar jToolBar = new JToolBar();
      JButton jButton1 = new JButton();
      JButton jButton2 = new JButton();
      JButton jButton3 = new JButton();
      ImageIcon image1;
      ImageIcon image2;
      ImageIcon image3;
      JLabel statusBar = new JLabel();
      JPanel jPanel1 = new JPanel();
      XYLayout xYLayout2 = new XYLayout();
      JTextField jTextField1 = new JTextField();
     
      public Cadre1() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
     
      //Initialiser le composant
      private void jbInit() throws Exception  {
        image1 = new ImageIcon(testinterface3.Cadre1.class.getResource("openFile.png"));
        image2 = new ImageIcon(testinterface3.Cadre1.class.getResource("closeFile.png"));
        image3 = new ImageIcon(testinterface3.Cadre1.class.getResource("help.png"));
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(null);
        this.setSize(new Dimension(400, 300));
        this.setTitle("Titre du cadre");
        //statusBar.setText(" ");
        //statusBar.setBounds(new Rectangle(0, 285, 400, 15));
        jMenuFile.setText("Fichier");
        jMenuFileExit.setText("Quitter");
        jMenuHelp.setText("Aide");
        jMenuHelpAbout.setText("A propos");
        jButton1.setIcon(image1);
        jButton2.setIcon(image2);
        jButton3.setIcon(image3);
        jToolBar.setBounds(new Rectangle(0, 0, 400, 25));
        jPanel1.setBounds(new Rectangle(1, 28, 398, 271));
        jPanel1.setLayout(xYLayout2);
        jToolBar.add(jButton1);
        jToolBar.add(jButton2);
        jToolBar.add(jButton3);
        jMenuFile.add(jMenuFileExit);
        jMenuHelp.add(jMenuHelpAbout);
        jMenuBar1.add(jMenuFile);
        jMenuBar1.add(jMenuHelp);
        this.setJMenuBar(jMenuBar1);
        contentPane.add(jToolBar, null);
        contentPane.add(statusBar, null);
        contentPane.add(jPanel1, null);
        jPanel1.add(jTextField1,    new XYConstraints(83, 81, 164, -1));
        jTextField1.requestFocus();
      }
    }

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    J'ai oublié de vous envoyer la classe principale contenant le main. Ca sera plus utile si vous voulez exécuter le pb... La voici :
    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
    import javax.swing.UIManager;
    import java.awt.*;
     
    /**
     * <p>Titre : </p>
     * <p>Description : </p>
     * <p>Copyright : Copyright (c) 2005</p>
     * <p>Société : </p>
     * @author non attribuable
     * @version 1.0
     */
     
    public class Application1 {
      boolean packFrame = false;
     
      //Construire l'application
      public Application1() {
        Cadre1 frame = new Cadre1();
        //Valider les cadres ayant des tailles prédéfinies
        //Compacter les cadres ayant des infos de taille préférées - ex. depuis leur disposition
        if (packFrame) {
          frame.pack();
        }
        else {
          frame.validate();
        }
        //Centrer la fenêtre
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
          frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
      }
     
      //Méthode main
      public static void main(String[] args) {
        try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e) {
          e.printStackTrace();
        }
        new Application1();
      }
    }

  12. #12
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    En fait, dans mon appli, le champ texte est le premier champ que j'ajoute à ma fenêtre et donc il a le focus, mais le resuestFocus() ne marche pas non plus...

    Je me suis un peu avancé tout à l'heure...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Points : 81
    Points
    81
    Par défaut
    C'est très bizarre cette histoire. AU SECOURS! quelqu'un peut-il nous aider SVP???

  14. #14
    Membre régulier Avatar de Goldocrack
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 126
    Points : 112
    Points
    112
    Par défaut
    Si tu ajoutes en dernier le composant qui doit avoir le focus, il l'obtiendra au démarrage de ton appli

    Après pour le changer en cours de route je suis en train de chercher, moi aussi j'avais ce problème...
    • Un langage de programmation est censé être une façon conventionnelle de donner des ordres à un ordinateur. Il n'est pas censé être obscur, bizarre et plein de pièges subtils (ça ce sont les attributs de la magie). [Dave Small]
    • Un programme c'est un sort que l'on jette à un ordinateur et qui se transforme en messages d'erreur.
    • Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse.


    et ne sont pas des options...

  15. #15
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Pour acquérir le focus, le composant (et donc toute sa hiérarchie de container) doit être visible.
    Donc tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jTextField1.requestFocus();
    seulement après avoir fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frame.setVisible(true);

  16. #16
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Ben moi c'est le contraire : c'est celui qui est ajouté en premier qui a le focus... :
    C'est vraiment bizarre : je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    panelColNumber.add(label);
    panelColNumber.add(txtNbColumn);
    panelColNumber.add(bApply);
    Et c'est mon "txtColumn" qui a le focus

    PS : mon 1er composant "label" est comme son nom l'indique un label et ne peut donc pas avoir le focus

  17. #17
    Membre régulier Avatar de Goldocrack
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 126
    Points : 112
    Points
    112
    Par défaut
    ooooooooo ui autant pour moi, dans la précipitation du clavier j'ai tapé "en dernier" au lieu de taper "en premier"

    Encore désolé (tiens pour la peine )
    • Un langage de programmation est censé être une façon conventionnelle de donner des ordres à un ordinateur. Il n'est pas censé être obscur, bizarre et plein de pièges subtils (ça ce sont les attributs de la magie). [Dave Small]
    • Un programme c'est un sort que l'on jette à un ordinateur et qui se transforme en messages d'erreur.
    • Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse.


    et ne sont pas des options...

  18. #18
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Par contre le fait de mettre le requestFocus() après le setVisible() ne change rien chez moi...
    J'utilise une JDialog : ca ne change rien par rapport à une JFrame pour le focus? (on ne sait jamais...)

  19. #19
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Le problème avec une JDialog, c'est qu'elle est bloquante sur le setVisible(). Le code qui suit (et donc le requestFocus()) n'est exécuté qu'une fois la JDialog fermée.

  20. #20
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    C'est ce que je viens de comprendre...
    Donc dans les JDialog, on est obligé de filer le focus au premier composant?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de Focus sur un JTextField à l'ouverture de la fenêtre
    Par nicofromChina dans le forum Composants
    Réponses: 2
    Dernier message: 19/01/2007, 10h09
  2. problème de focus dans un CEdit
    Par Depteam1 dans le forum MFC
    Réponses: 11
    Dernier message: 08/09/2005, 15h05
  3. [JtextField] Changement de focus?
    Par Regis.C dans le forum Composants
    Réponses: 8
    Dernier message: 15/03/2005, 11h10
  4. Problème de focus + touches de direction
    Par schnito dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 11/01/2005, 20h13
  5. [JTextField] Problème de setText()
    Par deathwing dans le forum Composants
    Réponses: 4
    Dernier message: 09/06/2004, 10h54

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