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 :

[Màj du problème] drawString avec une font differente.


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 37
    Points
    37
    Par défaut [Màj du problème] drawString avec une font differente.
    Bonjour et merci de votre attention.

    Je souhaiterais, dans un JPanel, dessiner une String. jusque la pas de soucis.
    Le soucis que j'ai c'est que je voudrais changer de font. Le problême est que je tiens absolument à ce que cet font soit dipsonible sur tous les systemes (Windows - Unix).

    Comment recuperer la liste des fonts disponible ? Comment choisir cette font a partir d'un fichier ?

    [MàJ] Voir 3ème post.
    Horloge : machine de grande morale pour l’Homme, lui rappelant sans cesse qu’il lui reste un peu de temps à vivre.

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Un ptit coup d'oeil dans la javadoc donne ceci et sur le FAQ y'a ça

    Après pour en trouver une qui est valable sur tous les systèmes, je ne sais pas trop...

  3. #3
    Nouveau membre du Club Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup mais en fait je vennais tout juste de tourver .

    Maintenant je me retrouve devant un second probleme :
    Je cherche à afficher toutes les fonts du system dans un JPanel. Hors ce JPanel est bien evidement trop petit pour acceuillir toutes les fonts. Comment le rendre scrollable de façon à pouvoir voir toutes les fonts ?

    Voici le code de mon petit outils :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    import java.awt.*;
    import javax.swing.*;
     
    public class MFontDisplayer {
     
    	/**
             * Affiche une frame dans laquelle sont affichées toutes les polices du system.
             * @param args
             */
    	public static void main(String[] args) {
     
    		//Un petite JFrame
    		JFrame frame = new JFrame ("FontDisplayer");
    		Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setSize(800,600);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setResizable(false);
    		frame.setLayout(new FlowLayout());
    		frame.setLocation((screen.width - frame.getSize().width)/2,(screen.height - frame.getSize().height)/2);
    		FPanel panel = new FPanel();
    		panel.setSize(frame.getContentPane().getSize());
    		panel.setBackground(Color.WHITE);
    		frame.add(panel);
    		frame.repaint();
     
    	}
     
    	/**
             * Un panel qui affiche toutes les fonts du system. 
             * @author Radical Bob
             */
    	static class FPanel extends JPanel {
     
    		private static final long serialVersionUID = 1L;
     
    		public void paintComponent (Graphics g) {
     
    			//L'environnement graphique.
    			GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
    			//La liste des fonts du system.
    			String[ ] fonts = environment.getAvailableFontFamilyNames();
    			//La hauteur a laquelle dessiner la prochaine font
    			int lastHeigth = 14;
    			//Ce qui sera affiché pour chaque font
    			String alphabet = "abcdefghijklmnopqrstuvwxyz";
    			//la font et son metrics
    			Font font;
    			FontMetrics metrics;
     
    			for (int i = 0; i<fonts.length; i++) {
     
    				font = new Font (fonts[i], Font.PLAIN, 14);
    				metrics = getFontMetrics(font);
    				g.setFont(font);
    				g.drawString(fonts[i]+" : "+alphabet+alphabet.toUpperCase(), 10, lastHeigth+5);
    				lastHeigth+=metrics.getHeight();
     
    			}
     
    		}		
     
    	}
     
    }
    Horloge : machine de grande morale pour l’Homme, lui rappelant sans cesse qu’il lui reste un peu de temps à vivre.

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Au lieu de faire :
    fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    frame.add(new JScrollPane(panel));
    Et le tour est joué

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Pour le coup du fichier, j'ai trouvé un truc sur la "FAQ" :
    http://www.developpez.net/forums/showthread.php?t=2032
    Cherche le post "comment utiliser une police True Type n'importe où en Java ?"

  6. #6
    Nouveau membre du Club Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par seiryujay
    Au lieu de faire :
    fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    frame.add(new JScrollPane(panel));
    Et le tour est joué

    Non ça ne suffit pas à moins peut être que mette à jour la taille du panel lui même au fur et a mesure que j'ajoute des font.

    Je test ça.
    Horloge : machine de grande morale pour l’Homme, lui rappelant sans cesse qu’il lui reste un peu de temps à vivre.

  7. #7
    Nouveau membre du Club Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Non ça ne marche pas.

    J'ai modifié le code de façon à ce que la taille du panel se mette a jour automatiquement etc... mais rien n'y fait, aucun scroll n'apparait.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    package minijeu;
     
    import java.awt.*;
    import javax.swing.*;
     
    public class MFontDisplayer {
     
    	/**
             * Affiche une frame dans laquelle sont affichées toutes les polices du system.
             * @param args
             */
    	public static void main(String[] args) {
     
    		//Un petite JFrame
    		JFrame frame = new JFrame ("FontDisplayer");
    		Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setSize(800, 600);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setResizable(false);
    		frame.setLayout(new FlowLayout());
    		frame.setLocation((screen.width - frame.getSize().width)/2,(screen.height - frame.getSize().height)/2);
    		FPanel panel = new FPanel();
    		panel.setSize(frame.getContentPane().getSize());
    		panel.setBackground(Color.WHITE);
    		JScrollPane spane = new JScrollPane(panel);
    		spane.setSize(frame.getContentPane().getSize());
    		frame.add(spane);
    		panel.setSize(panel.paint());
     
    	}
     
    	/**
             * Un panel qui affiche toutes les fonts du system. 
             * @author Radical Bob
             */
    	static class FPanel extends JPanel {
     
    		private static final long serialVersionUID = 1L;
    		private Dimension size = new Dimension ();
     
    		public Dimension paint() {
     
    			this.repaint();
    			return this.size;
     
    		}
     
    		public void paintComponent (Graphics g) {
     
    			//L'environnement graphique.
    			GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
    			//La liste des fonts du system.
    			String[ ] fonts = environment.getAvailableFontFamilyNames();
    			//La ahteur a laquelle dessiner la prochaine font
    			int lastHeigth = 14;
    			//Ce qui sera afficher pour chaque font
    			String alphabet = "abcdefghijklmnopqrstuvwxyz";
    			//la font et son metrics
    			Font font;
    			FontMetrics metrics;
     
    			for (int i = 0; i<fonts.length; i++) {
     
    				font = new Font (fonts[i], Font.PLAIN, 14);
    				metrics = getFontMetrics(font);
    				g.setFont(font);
    				g.drawString(fonts[i]+" : "+alphabet+alphabet.toUpperCase(), 10, lastHeigth+5);
    				lastHeigth+=metrics.getHeight();
     
    			}
     
    			this.size.setSize((int)this.getSize().getWidth(), lastHeigth);
     
    		}		
     
    	}
     
    }
    Horloge : machine de grande morale pour l’Homme, lui rappelant sans cesse qu’il lui reste un peu de temps à vivre.

  8. #8
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Ton panel fait la taille de ta frame, c'est donc normal que les scrollbars n'apparaissent pas...
    Si tu rajoutes ces 2 lignes, tu devrais voir les scrollbars...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    spane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
    spane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
    Après, tu dois préciser la preferredSize de ton JScrollPane, sinon il va prendre la taille du composant qu'il contient.

Discussions similaires

  1. Problème drawString avec Font exotique
    Par sylverspoon dans le forum Langage
    Réponses: 4
    Dernier message: 10/01/2013, 10h35
  2. Problème avec une Font embarqué dans un client silverlight
    Par Tardiff Jean-François dans le forum Silverlight
    Réponses: 1
    Dernier message: 16/09/2011, 12h31
  3. [VB6]Problème connexion avec une base ACCESS
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 15/05/2006, 18h47
  4. Réponses: 1
    Dernier message: 19/01/2006, 18h54
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 14h20

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