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 :

Créer font et importation


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut Créer font et importation
    Bonjour, je voudrais implémenter dans mon projet en java une font (trouvée sur le net au format .ttf).

    Je suis allé voir ce lien

    Et voici mon code:

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Font font = null;
    try {
    	font = Font.createFont(Font.TRUETYPE_FONT, new File("DS-DIGI.ttf"));
    } catch (FontFormatException | IOException e) {
    	e.printStackTrace();
    }
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    ge.registerFont(font);
     
    heure.setFont(font);

    Et là j'ai le message d'erreur suivant: can't read DS-DIGI.ttf

    Ma police d'écriture se trouve dans src/font/

    De plus j'ai ajouté le dossier font au build path (comme j'ai fait pour mon dossier image pour que ces dernières soient automatiquement importées avec mon projet final)

    j'ai donc aussi essayé:
    font = Font.createFont(Font.TRUETYPE_FONT, new File("/DS-DIGI.ttf"));
    font = Font.createFont(Font.TRUETYPE_FONT, new File("font/DS-DIGI.ttf"));
    font = Font.createFont(Font.TRUETYPE_FONT, new File("/font/DS-DIGI.ttf"));
    sans plus de succès.

    J'aimerais savoir comment faire que ma police soit bien chargée.

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Utilise le classloader pour charger depuis ton buildpath:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    font = Font.createFont(Font.TRUETYPE_FONT, getClass().getResourceAsStream("/font/DS-DIGI.ttf"));

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Il trouve ma font mais le JLabel ne m'affiche pas le texte (couleur de texte différente de mon fond pourtant).


    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Font font = null;
    try {
    	font = Font.createFont(Font.TRUETYPE_FONT, getClass().getResourceAsStream("/DS-DIGI.TTF"));
    } catch (FontFormatException | IOException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    }
    heure = new JLabel();
    heure.setOpaque(false);
    heure.setFont(font);
    heure.setForeground(new Color(40, 228, 230));
    heure.setBackground(Color.WHITE);
    panneauChrono.add(heure);

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il n'y a pas de texte à ce JLabel en même temps...

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Ah oui autant pour moi, j'ai oublié de recopier cette ligne:


    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    initializeTimer();

    ...qui fait suite à la création de mon JLabel.

    Et le corps de la méthode:

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        private void initializeTimer() {
        heure.setText("00");
        minute.setText("00");
        seconde.setText("00");
        heu = 0;
        min = 0;
        sec = 0;
        timer = createTimer();
    }

    Et toujours pas de texte.

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Si tu retire le font, ça marche?

    Aussi, est-ce que panneauChrono est bien ajouté à ta JFrame?

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Oui, si j'enlève et que je ne laisse plus que cette ligne:



    Mon texte réapparaît bien dans mon JLabel.

    Et j'ai remarqué des warnings sur mes polices:



    mais si je double clic sur chacune d'elle j'ai la possibilité de les installer, mais rien n'y fait.

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Vu le screenshot, ton code devrais être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    font = Font.createFont(Font.TRUETYPE_FONT, getClass().getResourceAsStream("/font/DS-DIGI.TTF"));
    Tu es sûr de ne pas avoir des erreurs dans ta console qui s'affichent?

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Alors j'ai recopié ta ligne.
    Voici la console:


  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu peux vérifier que getClass().getResourceAsStream("/font/DS-DIGI.TTF") ne renvoie pas null?

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Alors si je fais ca:


    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(getClass().getResourceAsStream("/font/DS-DIGI.TTF"));

    la console renvoie:



    Si je fais ceci:

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(getClass().getResourceAsStream("/DS-DIGI.TTF"));

    La console me renvoie ceci:



    Du coup comme l'erreur a disparu (je crois), j'essaie ceci:

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Font font = null;
    try {
    	font = Font.createFont(Font.TRUETYPE_FONT, getClass().getResourceAsStream("/DS-DIGI.TTF"));
    } catch (FontFormatException | IOException e) {
     
    	e.printStackTrace();
    }

    Rien ne s'affiche dans ma fenetre.

    Je mets l'arborescence complet de mon projet:


  12. #12
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Il te manque un deriveFont pour lui donner à minima une taille:

    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
    import java.awt.Font;
    import java.awt.FontFormatException;
    import java.io.IOException;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
     
     
    public class TTFTests {
     
        public static void main(String[] args) {
            Font font = null;
            try {
                font = Font.createFont(Font.TRUETYPE_FONT, TTFTests.class.getResourceAsStream("/DS-DIGI.TTF"));
                JFrame f = new JFrame();
                JLabel b = new JLabel();
                b.setFont(font.deriveFont(50.0f));
                b.setText("22:15");
                f.add(b);
                f.pack();
                f.setLocationRelativeTo(null);
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.setVisible(true);
            } catch (FontFormatException  e) {
     
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Bonjour

    Et bien écoutez j'ai essayé avec une autre font (il serait temps remarquez :p)

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
         font = Font.createFont(Font.TRUETYPE_FONT, Button_action.class.getResourceAsStream("/chocolate_cake.TTF"));
     
          heure.setFont(font.deriveFont(50.0f));
    } catch (FontFormatException  e) {
          e.printStackTrace();
    } catch (IOException e) {
          e.printStackTrace();
    }

    Et là ça fontionne. Donc ok je vois, c'est mes font qui sont pas bonnes depuis le début.

    Sauf que maintenant, nouvelle embuche, je veux importer mon projet avec cette font d'inclue dans mon jar (c'est le but final de mon topic en fait).

    Je fais donc ceci (je suis sous eclipse): clic droit sur mon projet -> export -> Runnable JAR file -> je coche package required libraries into generated JAR

    Je double clic sur le JAR que ça vient de me créer, mais la police n'est pas chargée

  14. #14
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    As tu bien sélectionné le dossier src/font lors de ton export?
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Comment je fais ça?

  16. #16
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Ca marche nickel chez moi, rien besoin de sélectionner, et avec ta font initiale.

    Vérifie que tes fonts sont bien présentes dans le jar (ouvre le avec un archiveur quelconque type 7zip ou winrar)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  17. #17
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Et oui tu as raison elle y est bien



    Roooo quelle connerie j'ai fait encore...

    EDIT: plus moyen d'ouvrir mon JAR en double cliquant dessus xD

Discussions similaires

  1. comment créer un batch (import CSV chaque jour)???
    Par futurist dans le forum SAGE
    Réponses: 6
    Dernier message: 12/06/2012, 15h16
  2. Créer un nombre important de boutons
    Par thebarbarius dans le forum Débuter
    Réponses: 15
    Dernier message: 30/07/2011, 06h32
  3. [AC-2003] Créer Log File - Importation DoCmd.TransferText
    Par skippy86 dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/06/2011, 16h02
  4. Créer macro pour importer fichier texte
    Par stpaul04 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/03/2011, 17h52
  5. [AC-2002] Créer fenêtre d'importation de fichier
    Par volganne dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/04/2010, 16h48

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