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

AWT/Swing Java Discussion :

JTextField en arabe


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    java
    Inscrit en
    Février 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : java

    Informations forums :
    Inscription : Février 2018
    Messages : 39
    Points : 10
    Points
    10
    Par défaut JTextField en arabe
    Bonjour,

    Comment faire pour que la langue de jtextfield a changé en arabe sans passer par la barre de windows ?

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Bonjour,
    Normalement chaque composant Swing dispose d'une propriété locale et d'une propriété componentOrientation qui sont héritées des valeurs de l'application obtenues soit depuis le système au lancement de l'application soit via les paramètres de la ligne de commande ou même en restaurant les préférences utilisateur au démarrage de cette même application. En Java, la langue et le pays sont définis dans la classe java.util.Locale, cette classe influe sur l'affichage des dates et nombres ainsi que l'orientation des composants et de l'UI.

    Par exemple, si ton application fonctionne sur un système en Français avec la Locale fr_FR (Français variante de France) ou fr_DZ (Français variante d’Algérie), alors chacun des composants de ton UI hérite de cette locale et de l'orientation qui va avec. Cela veut dire aussi que si tu lances la même application sur un système Arabe ou Hébreu, sans meme que tu changes une ligne de code, tu vas avoir une bonne partie sinon toute l'interface qui sera affichée en miroir (chose qu'il faut penser a prendre en compte si tu dois distribuer ton app dans d'autres pays ou même si tu restes en Algérie mais si tu as des postes dont l'OS est configuré pour afficher/saisir de l'Arabe au lieu du Français).

    Cependant, il t'est tout a possible de forcer manuellement un ou plusieurs composants a avoir la locale et l'orientation que tu souhaites. Par exemple :

    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
    import java.awt.ComponentOrientation;
    import java.util.Locale;
    import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
     
    public final class Main {
     
        private static void startUI() {
            final Locale arabic = new Locale("ar");
    //        final Locale arabic = new Locale("ar", "DZ");
            final JTextField field1 = new JTextField();
            final JTextField field2 = new JTextField();
            field2.setLocale(arabic);
            field2.setComponentOrientation(ComponentOrientation.getOrientation(arabic));
            final Box box = new Box(BoxLayout.Y_AXIS);
            box.setBorder(new EmptyBorder(3, 3, 3, 3));
            box.add(field1);
            box.add(Box.createVerticalStrut(3));
            box.add(field2);
            final JFrame frame = new JFrame("Test");
            frame.setContentPane(box);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
        }
     
        public static void main(String... args) {
            SwingUtilities.invokeLater(Main::startUI);
        }
    }
    Ici le second champs de saisie sera avec la locale arabe (pas de variante de pays, j'ai mis en commentaire la variante algérienne) et avec une orientation de droite vers la gauche.

    Attention, cela n’empêche pas la saisie de caractères latins ou autres ; juste que cela affiche le curseur du bon cote du champs pour l'arabe et insère les caractères dans la bonne direction. Si tu veux restreindre en plus le champs des saisies aux caractères arabes, il te faut :
    • Soit mettre un DocumentListener sur le champ textuel pour filtrer les caractères non valides lors de la saisie.
    • Soit utiliser a la place un JFormattedTextField avec les bonnes règles de validation.


    EDIT - et j'oubliais au cas ou, si les caractères arabes ne s'affichent pas correctement, c'est qu'il y a un soucis avec la police utilisée par le champs texte. Il faudra donc en spécifier une autre si besoin si ce soucis survient.

    EDIT 2 - voir aussi un vieux post sur ce sujet Caractère Arabe via JTextField
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Mettre un JTextField en arabe
    Par samarqand dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 18/06/2014, 20h09
  2. Réponses: 4
    Dernier message: 09/10/2009, 23h31
  3. Caractère Arabe via JTextField
    Par asma2009 dans le forum Composants
    Réponses: 3
    Dernier message: 16/06/2009, 15h30
  4. saisie des caractéres arabe dans un jTextField
    Par RouRa22 dans le forum Composants
    Réponses: 12
    Dernier message: 08/09/2008, 09h57
  5. JTextField en Arabe
    Par BMASTAR dans le forum Composants
    Réponses: 6
    Dernier message: 10/10/2007, 10h50

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