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 :

[Composant] Customiser le graphisme


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Composant] Customiser le graphisme
    Bonjour,

    Je cherche à créer un simple composant Barre qui hérite de JComponent qui doit m'afficher une barre de soulignement.
    Si j'ajoute une instance de cet objet à un JFrame, c'est bon il est visible.
    Mais si je l'ajoute à un JPanel lui même contenu dans la JFrame, rien n'apparait.
    Voilà la source (sans les imports qui sont implicites)

    ********************************
    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
     
    class Barre extends JComponent {
     
        public Barre() {  }
     
        protected void paintComponent(Graphics g) {
            g.drawLine(5,30,50,40);
        }
    }
     
    *******************************
     
    public class Graphi {
     
        public static void main(String[] args) {
     
            JFrame f=new JFrame();
            f.setSize(200,300);
            JPanel jp=new JPanel();
            jp.add(new Barre());
            f.getContentPane().add(jp);
            f.setVisible(true);
            jp.repaint();
     
        }
    }
    [Modéré par Didier] : ajout de tag dans le titre + ajout de balises code pour la lisibilité - Les règles du forum Java

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 73
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Explication mise dans les commentaires.

    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
    public class Graphi {
     
    	public static void main(String[] args) {
     
    		JFrame f=new JFrame();
    		f.setSize(200,300);
    		JPanel jp=new JPanel();
    		jp.setBorder(new LineBorder(Color.GREEN));// Rajouter pour voir la taille prise pas le panneau
    		// On voit apparaitre un petit trait vert tout autour 	
     
    		// Si on fait comme ca on obtient la Barre
    		jp.setLayout(new GridBagLayout());
    		GridBagConstraints contrainte=new GridBagConstraints();
    		contrainte.fill=GridBagConstraints.BOTH;
    		contrainte.weightx=1;
    		contrainte.weighty=1;
    		jp.add(new Barre(),contrainte);
     
    		// Si on fait comme ca on obtient pas la barre parce que 
    		// elle reste toute petite (voir tres tres petite)
    //		jp.add(new Barre());
     
    		f.getContentPane().add(jp);
    		f.setVisible(true);
    		jp.repaint();
     
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Barre extends JComponent {
     
    	public Barre() {
    		setBorder(new LineBorder(Color.RED));// Rajouter pour voir la taille prise pas la barre
    	}
     
    	protected void paintComponent(Graphics g) {
    		g.drawLine(5,30,50,40);
    	}
    }
    Autre solution la surcharge de getPreferredSize (méthode de JComponent) :

    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
     
    public class Graphi {
     
    	public static void main(String[] args) {
     
    		JFrame f=new JFrame();
    		f.setSize(200,300);
    		JPanel jp=new JPanel();
    		jp.setBorder(new LineBorder(Color.GREEN));// Rajouter pour voir la taille prise pas le panneau
    		// On voit apparaitre un petit trait vert tout autour 	
     
    		jp.add(new Barre());
    		f.getContentPane().add(jp);
    		f.setVisible(true);
    		jp.repaint();
     
    	}
    }
    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
    class Barre extends JComponent {
     
    	public Barre() {
    		setBorder(new LineBorder(Color.RED));// Rajouter pour voir la taille prise pas la barre
    	}
     
    	protected void paintComponent(Graphics g) {
    		g.drawLine(5,30,50,40);
    	}
     
    	public Dimension getPreferredSize() {
    		return new Dimension(100,100);
    	}
     
    }
    Cordialement,

    Pense au tag [Résolu] si ton problème est ok..
    PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour ces deux solutions de qualité....j'aurais une dernière petite question...comment faire dans le cas du getPreferedSize pour faire en sorte que le cadre s'ajuste au dessin?

    Merci à tous

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 73
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Je ne suis pas sur d'avoir bien compris. Mais, je vais essayer une interpretation...
    La methode getPreferedSize retourne un objet de la classe Dimension...
    Cette classe a des attributs de hauteur et de largeur...
    Donc, si le getPreferedSize retourne un objet Dimension avec la hauteur et la largeur majoré d'un petit quelquechose le cadre de ton objet Barre correspondra au mieux de ces dimensions

    Cordialement,
    PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Customiser les skins de Application Composer
    Par gmoder dans le forum W4 Express
    Réponses: 3
    Dernier message: 29/03/2012, 15h32
  2. Réponses: 1
    Dernier message: 09/02/2011, 11h17
  3. Réponses: 1
    Dernier message: 09/12/2010, 17h31
  4. [Dojo] Customiser le composant TimeTextBox
    Par hastiok dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 07/12/2009, 23h09
  5. Customiser le composant TabPage avec une checkbox
    Par Akta3d dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/09/2007, 14h38

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