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

Agents de placement/Fenêtres Java Discussion :

Dégradé dans un contentPane


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut Dégradé dans un contentPane
    Bonjour,

    J'ai un JDialog où je souhaiterais que le fond soit un dégradé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void paint(Graphics g)
    { 
    	super.paint(g);
     
    	Color backgroundEdge = new Color(74, 91, 159);
    	Color backgroundCenter = new Color(99, 146, 193);
     
    	Graphics2D g2 = (Graphics2D) this.getContentPane().getGraphics();
    	g2.setPaint(new GradientPaint(0, 0, backgroundCenter, 0, this.getHeight(), backgroundEdge, true));
    }
    J'ai aussi essayé :
    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
    public class LightBox extends JDialog
    {
    	private static final long serialVersionUID = -6631531322633376093L;
     
    	public LightBox(JFrame parent, boolean modal, JPanel jPanel)
    	{
    		super(parent, "", modal);
     
    		this.setSize(jPanel.getWidth() + 2 * 5, jPanel.getHeight() + 2 * 5);
    		this.setLocationRelativeTo(null);
    		this.setUndecorated(true);
    		this.setResizable(false);
     
    		Color backgroundEdge = new Color(74, 91, 159);
    		Color backgroundCenter = new Color(99, 146, 193);
     
    		this.getContentPane().setBackground(Color.RED);
     
    		/*
    		Graphics2D g2 = (Graphics2D) this.getContentPane().getGraphics();
    		g2.setPaint(new GradientPaint(0, 0, backgroundEdge, 0, this.getHeight(), backgroundCenter, true));
    		/**/
     
    		this.setVisible(true);
     
    		this.repaint();
    	}
     
    	[...]
    }
    Le problème est que j'ai remarqué que si je mettais le setBackground après le setVisible, la couleur n'était pas prise en compte. Je le met donc avant, ainsi que pour le Graphics2D.

    Mais si je fais appel à Graphics2D avant le setVisible il renvoie un null. Je dois donc le faire avant pour qu'il soit pris en compte, mais dans ce cas l'objet renvoyé est null !

    Comment puis je faire pour que l'arrière plan de JDialog soit un dégradé ?

    D'avance merci pour votre aide.



    xenos

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    salut.

    Citation Envoyé par xenos Voir le message
    Le problème est que j'ai remarqué que si je mettais le setBackground après le setVisible, la couleur n'était pas prise en compte. Je le met donc avant, ainsi que pour le Graphics2D.

    Mais si je fais appel à Graphics2D avant le setVisible il renvoie un null. Je dois donc le faire avant pour qu'il soit pris en compte, mais dans ce cas l'objet renvoyé est null !

    Comment puis je faire pour que l'arrière plan de JDialog soit un dégradé ?

    D'avance merci pour votre aide.
    j'ai rien compris ou peut être que je veux pas comprendre .
    tu peux dessiner un rectangle couvrant tout l'espace de ton composant et lui attribuer une couleur en dégradé.

  3. #3
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Citation Envoyé par slim_java Voir le message
    tu peux dessiner un rectangle couvrant tout l'espace de ton composant et lui attribuer une couleur en dégradé.
    Ma question est justement comment le faire : Comment puis je faire pour que l'arrière plan de JDialog soit un dégradé ? ...

    D'ailleurs je ne comprend pas ce que tu ne comprends pas dans la question ...

    J'imagine que tu sais ce que c'est qu'un JDialog, que dans un tel composant il y a un contentPane que je récupère, comme indiqué dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics2D g2 = (Graphics2D) this.getContentPane().getGraphics();
    Une fois que je l'obtiens j'y mets un dégradé, mais rien ne s'affiche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2.setPaint(new GradientPaint(0, 0, backgroundEdge, 0, this.getHeight(), backgroundCenter, true));
    Donc, comment cela se fait il que malgré que j'ai pris mon contentPane et que j'ai demandé d'y dessiner un dégradé, rien ne se dessine ?

    J'espère que c'est plus clair maintenant. Sinon n'hésites pas à me soumettre d'autres questions !

  4. #4
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    un contexte graphique G est utilisé pour faire généralement du dessin...
    tu peux pas appliquer un dégradé à ton composant en faisant g.setPaint() car pour spécifier une couleur à un container, on utilise un setBackground(..)

    comment on peut faire alors ?

    comme je t'ais déja dis, tu peux dessiner un rectangle (donc pouvoir utiliser la méthode setpaint() ) couvrant toute la surface de ton composant et spécifier la couleur de dessin comme tu as fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2.setPaint(new GradientPaint(0, 0, backgroundEdge, 0, this.getHeight(), backgroundCenter, true));
    remarque: tu dois rédéfinir la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paintComponent(Graphics g)
    de ton composant SWING et utiliser l'objet g passé en paramètre

  5. #5
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Citation Envoyé par slim_java Voir le message
    tu dois rédéfinir la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paintComponent(Graphics g)
    de ton composant SWING
    J'ai déjà testé cette solution, mais la JVM ne passe jamais par ces méthodes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void paintComponents(Graphics g)
    {
    	System.out.println("paintComponents");
    }
     
    protected void paintComponent(Graphics g)
    {
    	System.out.println("paintComponent");
    }

  6. #6
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par xenos Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void paintComponents(Graphics g)
    {
        System.out.println("paintComponents");
    }
     
    protected void paintComponent(Graphics g)
    {
        System.out.println("paintComponent");
    }
    salut.
    JDialog n'étend pas JComponent donc tu fais appel à la méthode paint(Graphics g) au lieu de paintComponent(Graphics g).
    Pourquoi ne pas utiliser un JPanel à la place des JDialog ?

Discussions similaires

  1. vba - ppt2007 Dégradés dans Graphes
    Par House MD dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 25/11/2008, 12h23
  2. Dégradé dans un TMemo
    Par BuzzLeclaire dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/10/2008, 16h26
  3. [Astuce] Mettre un dégradé dans le fond d'une cellule
    Par cafeine dans le forum Contribuez
    Réponses: 0
    Dernier message: 10/04/2008, 21h25
  4. Dégradé dans un JPanel
    Par Fabien_007 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 11/06/2006, 17h29
  5. [JPanel] [Débutant] Fond dégradé dans un JPanel ??
    Par dymezac dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/02/2006, 17h33

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