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 :

Changer la police de caractère de mon application GUI


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut Changer la police de caractère de mon application GUI
    Bonjour à tous.

    Je travaille actuellement sur une application Java qui est structurée comme ceci :

    - Un serveur d'application JBoss 4.0.1 linké à un DB MySQL 5.1
    - Une application cliente GUI, lancée via Java web start

    Pour les besoins du client, nous devons faire en sorte de prendre en charge tous les alphabets possibles (cyrillique, arabe, chinois, coréen, etc...)

    Bref, côté serveur & BD, j'ai rajouté ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
             <prop key="hibernate.connection.url">jdbc:mysql://${db.host.name}:${db.host.port}/${db.replication.name}?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;characterResultSets=utf8</prop>
             <prop key="hibernate.jndi.url">jdbc:mysql://${db.host.name}:${db.host.port}/${db.replication.name}?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;characterResultSets=utf8</prop>
    Et côté MySQL, dans le fichier de config j'ai fait en sorte de prendre en compte l'utf8.

    Donc jusque là, tout va bien.

    Maintenant, l'affichage des données côté client...

    La police de base de l'application cliente est capable d'afficher des caractères cyrilliques, par contre quand j'essaye d'afficher des caractères coréens (dans un TextField tout bête), ben j'ai de jolis petits carrés.

    Bref, je me suis dit que c'était un problème de police, et j'ai donc fait ceci au lancement de mon appli cliente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        UIDefaults def = UIManager.getDefaults();
        def.put("TextArea.font", new Font("Batang", Font.PLAIN, 14));
        def.put("Label.font", new Font("Batang", Font.PLAIN, 14));
     
        java.util.Enumeration keys = UIManager.getDefaults().keys();
        while (keys.hasMoreElements())
        {
          Object key = keys.nextElement();
          Object value = UIManager.get(key);
          if (value instanceof javax.swing.plaf.FontUIResource)
            UIManager.put(key, new Font("Batang", Font.PLAIN, 14));
        }
    Ce petit bout de code change la police et avec cette police je peux afficher des caractères coréens, chinois, mais pas arabe.


    Bref mes questions :

    - Est ce bien propre/conseillé de changer la police d'une application comme ceci? Y'a-t-il une manière de faire plus propre?
    - Y'a t-il une police capable d'afficher TOUS les caractères de TOUS les alphabets possibles? Ou bien, vais je devoir configurer un truc pour pouvoir changer la police dynamiquement??


    De plus, actuellement, le java utilisé est le Java 1.4.2_03, mais nous passons en ce moment en Java 6.0, en Java 6.0, la gestion des polices de caractères est elle mieux gérée?

    D'avance merci pour vos remarques/conseils/critiques !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 28
    Par défaut
    Un peu d'aide pour le Mogwai SVP ?

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par GyZmoO Voir le message
    - Est ce bien propre/conseillé de changer la police d'une application comme ceci? Y'a-t-il une manière de faire plus propre?
    Cela me semble correcte, si ce n'est que les 2 premiers def.put() sont inutile (ce sera refait par la boucle), et que tu multiplies inutilement les instances de Font (il serait préférable de l'instancier une seule fois et de la partager) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	UIDefaults defaults = UIManager.getDefaults();
    	Font font = new Font("Batang", Font.PLAIN, 14);
     
    	java.util.Enumeration<?> keys = defaults.keys();
    	while (keys.hasMoreElements()) {
    		Object key = keys.nextElement();
    		Object value = UIManager.get(key);
    		if (value instanceof javax.swing.plaf.FontUIResource)
    			defaults.put(key, font);
    	}
    Après il faut se méfier du new Font(), car si la police n'existe pas sur le système tu te retrouveras avec une police par défaut. Si c'est si important pour toi il serait préférable d'intégrer la police dans ton application et de la charger avec Font.createFont()...


    Citation Envoyé par GyZmoO Voir le message
    - Y'a t-il une police capable d'afficher TOUS les caractères de TOUS les alphabets possibles?
    Aucune idée..
    Citation Envoyé par GyZmoO Voir le message
    Ou bien, vais je devoir configurer un truc pour pouvoir changer la police dynamiquement??
    Possible...
    Tu peux toujours utiliser la méthode canDisplayUpTo() afin de savoir si une police de caractère peut afficher correctement une chaine ou pas...


    Citation Envoyé par GyZmoO Voir le message
    en Java 6.0, la gestion des polices de caractères est elle mieux gérée?
    C'est à dire ? Que voudrais-tu de plus ?

    a++

  4. #4
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Ok, merci pour tes réponses !

    Pas mal la méthode canDisplayUpTo().

    Sinon pour Java 6 je posais la question de manière "générale", je n'ai aucune idée derrière la tête en fait

    Merci encore.

Discussions similaires

  1. Fournir une police de caractères avec son application ?
    Par SLicTa dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/10/2008, 10h10
  2. Changer de form de départ de mon application
    Par loic72 dans le forum C#
    Réponses: 2
    Dernier message: 31/07/2007, 15h35
  3. Mise en forme : changer la police du texte de mon document
    Par mmb04 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 08/06/2007, 13h35
  4. Changer de police de caractères dans DC
    Par vanitom dans le forum MFC
    Réponses: 3
    Dernier message: 12/12/2005, 17h28
  5. Comment changer la police de caractère d'un menu
    Par RémiONERA dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/11/2005, 21h05

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