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

 Java Discussion :

String dans un JPanel


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 25
    Par défaut String dans un JPanel
    Bonjours, tout d'abord désolé, si mes 2 précédents post ne sont pas en [résolu], mais quand je cliquais sur option de la discussion, je ne voyais pas l'option et j'étais pourtant connecté.

    Mais sinon, je rencontre un petit problème pour afficher une String dans un Jpanel. Je ne sais pas trop comment je dois initialiser ma variable FontMetrics

    En gros j'essaie de définir la taille du JPanel selon la largeur en pixel de la String qui sera afficher, mais je rencontre un problème dans mon setPreferredSize

    ça donnerait un truc dans le genre

    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
     
    public class image extends JPanel 
    {
     
    	private String mot;
    	FontMetrics fm;
    	public image(String mot)
    	{
    		this.mot = mot;
    		setPreferredSize(new Dimension(fm.stringWidth(mot) + 1,5));
    	}
     
     
     
    	public void paintComponent(Graphics g)
    	{
    		fm = g.getFontMetrics();
    		g.drawString(mot, 0, 0);
    	}
    }
    Malheureusement quoi que je fasse ma variable fm retourne un null, car je ne sais pas trop comment je dois l'initialiser.

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Ca fonctionne comme dans ce code :

    La hauteur d'un String est définie par interligne + jambagedescendant + jambage ascendant.

    La coordonnée y de ce String n'est pas le coin supérieur mais le bas du jambage ascendant donc drawString(mot,0,0) n'affiche rien.

    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
     
    import javax.swing.*;
    import java.awt.*;
     
    public class image extends JPanel {
     
    	String mot;
    	Font font;
    	FontMetrics fm;
    	public image(String mot){
    		this.mot = mot;
    		font = new Font(null, Font.PLAIN, 12);
    		fm = getFontMetrics(font);
    		System.out.println("Largeur : " + fm.stringWidth(mot));
    		System.out.println("Hauteur entre 2 lignes : " + fm.getHeight());
    		System.out.println("Jambage ascendant : " + fm.getAscent());
    		System.out.println("Jambage descendant : " + fm.getDescent());
    		System.out.println("Interligne : " + fm.getLeading());
    		setPreferredSize(new Dimension(fm.stringWidth(mot) + 1,fm.getHeight()));
    	}
     
    	public void paintComponent(Graphics g){
    		Graphics2D gg = (Graphics2D) g.create();
    		gg.setBackground(Color.red);
    		gg.clearRect(0,0,getWidth(),getHeight());
    		gg.setFont(font);
    		gg.drawString(mot, 0, 12);//12 = jambage ascendant
    	}
     
    	public static void main(String[] args) {
    		JFrame jf = new JFrame();
    		jf.setSize(500,500);
    		jf.setLayout(new FlowLayout());
    		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		image im = new image("coucoucou");
    		jf.add(im);
    		jf.setVisible(true);
    	}
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 25
    Par défaut
    Salut, ce n'était pas que ça, car j'avais l'exception NullPointerException avant même le draw String.

    Si je comprend bien, on ne peut pas afficher une string à la position 0,0. En tout cas je te remercie d'aider le noob que je suis si on peut dire

Discussions similaires

  1. Integer ou string dans une DBGRID
    Par Yepazix dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 13h42
  2. Dessiner dans un JPanel
    Par Oliveuh dans le forum Composants
    Réponses: 5
    Dernier message: 19/07/2004, 12h13
  3. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42
  4. Réponses: 6
    Dernier message: 24/07/2003, 12h39
  5. Recherche d'un String dans un String ?
    Par apen2k2 dans le forum Langage
    Réponses: 9
    Dernier message: 14/04/2003, 11h08

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