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

Interfaces Graphiques en Java Discussion :

Probleme changement police de caractere


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 42
    Points
    42
    Par défaut Probleme changement police de caractere
    Bonjour,

    je fais une applet et je voudrais changer le font dema police. J'ai implementé la méthode suivante :

    public static void changePoliceCaractere(JLabel lbl) throws Exception
    {
    InputStream ttf;
    Font police;

    try {
    ttf = new FileInputStream("/font/e.ttf");
    police = Font.createFont(Font.TRUETYPE_FONT, ttf);
    }
    catch (Exception e) { //Une solution de rechange, au cas où...
    police = new Font("gulim", Font.PLAIN, 60);
    }
    lbl.setFont(police);

    }

    Que j'appel dans le main comme ceci :

    changePoliceCaractere(Label1);



    Ca ne marche pas ... helpliz !

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Une police creee par createFont() possede une taille par defaut de 1. Change -la, ca devrait mieux aller.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    MerciGfx pour ta reponse.

    J'ai essayé de changer la taille de la police :

    lbl.setFont(police.deriveFont(70));


    mais ca affiche toujours en tout petit ....

    Merci !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    J'ai trouvé, merci.

    lbl.setFont(police.deriveFont(70f));
    |
    |

    manquait le 'f'


    +

  5. #5
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    J'allais le dire, sans le f tu specifies le style (qui devrait etre BOLD, PLAIN, etc.) Evite aussi de charger la police a chaque fois avec createFont(). Tu devrais faire un cache des polices chargees de la sorte. Java 1.6 le fera a ta place.

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par Gfx
    J'allais le dire, sans le f tu specifies le style (qui devrait etre BOLD, PLAIN, etc.) Evite aussi de charger la police a chaque fois avec createFont(). Tu devrais faire un cache des polices chargees de la sorte. Java 1.6 le fera a ta place.
    Qu'est ce que tu entends exactement par "cache des polices chargees" ?
    Uniquement pour les polices créer par createFont ou pour toutes les plolces utilisées dans le programme ?

  7. #7
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Ce qui se passe avec ta méthode, c'est que le fichier de police sera lu à chaque appel. Tu peux faire quelque chose d'à peine différent :
    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
    private static Font police = null;
    // ceci est ton cache qui contient les polices chargées
    // bon ici y'en a qu'une seule mais c'est pareil
     
    private static void initFont() {
    //méthode qui charge la police dans le cache
      InputStream ttf;
      try {
        ttf = new FileInputStream("/font/e.ttf");
        police = Font.createFont(Font.TRUETYPE_FONT, ttf);
      }
      catch (Exception e) {
        police = new Font("gulim", Font.PLAIN, 60);
      } 
    }
     
    public static void changePoliceCaractere(JLabel lbl) {
      if(police == null)
        initFont();
     
      lbl.setFont(police.deriveFont(70f));
    }
    Un cache part du même principe, sauf qu'il y a un gros paquet de polices classées dans une Map, et qu'on y accède par leur nom ou par des attributs.

    [EDIT] ajout de commentaires dans le code

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    La question que je pose en fait c'est la suivante :
    Dans mon programme j'ai tout plein de composants (plus d'un millier) auxquels j'affecte à presque tous une police par la méthode setFont(new Font(...)). Et pour beaucoup de ces composants j'utilise la même police, en gros je n'utilise que 5 ou 6 polices différentes.
    Je voulais donc savoir s'il était judicieux de créer justement un cache de police qui me permetrais d'éviter faire des new Font() pour chacun et mes composants (j'imagine que la réponse est oui, mais il y a peut etre des effets de bords auxquels je n'aurais pas pensé ?) et surtout est ce que le cache de police dont parle Gfx pour java 1.6 va fonctionner pour ce genre d'utilisation ou uniquement avec les appels à createFont.

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    et ce cache existe-t-il deja dans la version de java 1.6 qui est telechargeable chez SUN ?

  10. #10
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Oui.

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    Ok, merci.

    Et une idée pour ma question ?

    Citation Envoyé par Guybrush
    La question que je pose en fait c'est la suivante :
    Dans mon programme j'ai tout plein de composants (plus d'un millier) auxquels j'affecte à presque tous une police par la méthode setFont(new Font(...)). Et pour beaucoup de ces composants j'utilise la même police, en gros je n'utilise que 5 ou 6 polices différentes.
    Je voulais donc savoir s'il était judicieux de créer justement un cache de police qui me permetrais d'éviter faire des new Font() pour chacun et mes composants (j'imagine que la réponse est oui, mais il y a peut etre des effets de bords auxquels je n'aurais pas pensé ?) et surtout est ce que le cache de police dont parle Gfx pour java 1.6 va fonctionner pour ce genre d'utilisation ou uniquement avec les appels à createFont.

  12. #12
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Je crois que tu peux sans problème utiliser le meme objet Font pour tous tes composants. J'ai pas le code source sous la main, mais les LookAndFeel fonctionnent exactement comme ça, d'après mes souvenirs.

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/02/2008, 11h15
  2. Problème de police de caractères
    Par Matthieu Brucher dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/02/2006, 10h29
  3. [html] probleme de police
    Par aldorado_one dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 15/05/2005, 13h34
  4. Probleme avec remplacement de caractere
    Par genzo93 dans le forum ASP
    Réponses: 9
    Dernier message: 18/01/2005, 10h51
  5. [TP]Pb de police de caractère...
    Par jipers dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 01/06/2003, 20h49

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