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

Java Discussion :

Changement du clavier lors d'un Click sur jTextField


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    etudiant
    Inscrit en
    Mars 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 38
    Par défaut Changement du clavier lors d'un Click sur jTextField
    Bonjour,
    Voila mon code source qui sert à changer le clavier en arabe lorsque je Click sur un jTextField, mais ça donne rien ????
    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
     
    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
            // TODO add your handling code here:
            Locale locale=new Locale("ar", "AE");
            final InputContext context = InputContext.getInstance();
            contexts.add(context);
     
            if (!context.selectInputMethod(locale)) {
     
               jTextField1 = new JTextField("Langue '" + locale.getDisplayName() + "' non supportée");
                jTextField1.setEnabled(false);
            } else {
                jTextField1 = new JTextField() {
                    public InputContext getInputContext() {
                        return context;
                    }
                };
            }
        }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il ne se passe rien, parce que tu crées un JTextField dont tu ne fais rien. Il faut le mettre dans un container à un moment donné, si tu veux le voir. En plus, tu le fais par actionPerformed, ce qui ne réagit pas au clic, mais à la validation de la saisie (enfin lorsqu'on tape entrée, je veux dire).
    En plus, si ton évènement (pas l'actionPerformed mais le focusGained, ou le MouseListener.mouseClicked() à la rigueur, est sur le JTextField que tu voudrais voir modifié, là, tu crées un nouveau JTextField dont tu n'en fais rien (il ne remplace en aucun cas celui sur lequel tu as cliqué. Il faudrait supprimer l'ancien et le remplacer par le nouveau, ce qui n'est pas simple à cause du layout : pour le remplacer, on ne peut que l'enlever et ajouter le niveau, donc forcément à la fin, ce qui va saboter le formulaire si le jtextfield n'est pas déjà à la fin.
    On pourrait supprimer le composant, puis tous ses suivants, en les mettant de côté, pour ajouter le nouveau, et ré-ajouter tous les suivants ensuite. En plus, il faudrait redonner le focus au nouveau champ, parce qu'un clic à la base ça donne le focus.

    Bref, tout ça c'est bien compliqué : qu'est-ce que tu cherches à faire au juste ? Pourquoi créer un field lors du clic sur un field (lui ou un autre).


    A noter que l'orientation n'est pas gérée : il faudrait ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTextField1.setComponentOrientation(ComponentOrientation.getOrientation(locale));
    PS: ce serait intéressant par ailleurs de mettre un message dans la langue de la locale en cas de locale non supportée. Tu peux obtenir le nom de la langue dans la locale, par locale.getDisplayName(locale), par contre pour le reste du message, il faudrait passer par un ressource bundle, avec un message à paramètre (MessageFormat, ou String.format()).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre actif
    Femme Profil pro
    etudiant
    Inscrit en
    Mars 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 38
    Par défaut
    Salut,

    J'ai un formulaire à remplir, récemment on m'a demander de rajouter quelque champs en arabe, sur mon formulaire j'ai une dizaine de jtextfield certains seront remplis en arabe et d'autres en français(et ils sont dans des positions différentes, pas forcément en dernier).
    maintenant, je veux que lorsque je Click sur le jTextField1 qui doit être rempli en arabe, le clavier change automatiquement de langue (pour faciliter à l'utilisateur au lieu de faire à chaque fois shift+alt)

    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
     
    private void jTextField1MousePressed(java.awt.event.MouseEvent evt) {                                         
            Locale locale=new Locale("ar", "AE");
            //Locale locale=Locale.UK;
            final InputContext context = InputContext.getInstance();
            contexts.add(context);
     
            if (!context.selectInputMethod(locale)) {
                jTextField1.setEnabled(false);
            } else {
                jTextField1 = new JTextField() {
                    public InputContext getInputContext() {
                        return context;
                    }
                };
     
            }
        }

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Avec le code que je t'ai donné, pour les JTextArea, et que tu as repris pour les JTextField, un inputcontext avec une locale particulière est "associé" à chaque composant. Lorsque le composant prend le focus, qu'on clique dedans ou qu'on y arrive par tab, il utilise cet inputcontext. Il n'y a rien à faire de spécial en plus.

    On pourrait même faire une classe qui étend JTextField, appelée LocalizedJTextfield, qu'on utiliserait comme n'importe quel JTextField, et qui aurait sa propre "langue" de saisie.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 10
    Dernier message: 21/12/2008, 18h32
  2. Emission d'un signal lors d'un click sur une image
    Par peuf23 dans le forum Débuter
    Réponses: 27
    Dernier message: 20/12/2008, 17h12
  3. Réponses: 5
    Dernier message: 04/10/2007, 14h45
  4. Réponses: 20
    Dernier message: 12/06/2007, 10h11
  5. [.Net 2.0]iconifier lors d'un click sur minimiser
    Par Harry_polin dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/01/2006, 22h08

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