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

Composants Java Discussion :

[JMenuItem] Changer l'apparence


Sujet :

Composants Java

  1. #1
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut [JMenuItem] Changer l'apparence
    bonjour à tous,
    j'ai créé ma propre classe MyJMenuItem pour pouvoir le dessiner à ma convenance.
    Ca marche bien sauf quand l'item à le Rollover (quand la souris est dessus) je n'arrive pas à changer le paint
    (voir pièce jointe)

    voici mon paint :
    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
     
    public void paint(Graphics g) {
    		super.paint(g);
     
    		if (!isOpaque()) {
    			return;
    		}
     
    		int width  = getWidth();
    		int height = getHeight();
    		Graphics2D g2 		= 	(Graphics2D) g;
     
    // MARCHE PAS
    		if(hasRollover){
    			g2.setPaint(
    					new LinearGradientPaint(new Point(width, 0), new Point(0,0), new float[] { 0f,0.22f,0.33f,0.90f, 1.f }, new Color[] {TOP_COLOR, MIDLE_COLOR,MIDLE_COLOR, BOTTOM_COLOR, Color.WHITE}));
    		}
    // MARCHE
    		else{
    			g2.setPaint(
    					new LinearGradientPaint(new Point(0, 0), new Point(width,0), new float[] { 0f,0.22f,0.33f,0.90f, 1.f }, new Color[] {TOP_COLOR, MIDLE_COLOR,MIDLE_COLOR, BOTTOM_COLOR, Color.WHITE}));
    		}
     
    		g2.fillRect(0, 0, width, height);
    		this.setOpaque(false);
    		super.paintAll(g);
    		this.setOpaque(true);
     
    	}
    au mieux j'arrive à mettre le dégradé que je veux mais je n'ai plus le texte de l item

    une idée ?? merci
    Images attachées Images attachées  

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    1. Il vaut mieux redéfinir paintComponent que paint pour les composants Swing
    2. Fais ton appel à super.paintComponent(g) après avoir dessiné sur le composant et non avant (la tu dessines par dessus ce que le paintComponent a déja dessiné )
    3. this.setOpaque n'a rien à faire dans le code de dessin. Faut le faire une fois dans le constructeur et c'est fini
    4. Enlève le super.paintAll, il n'a rien à faire là.
    5. Attention la création d'un LinearGradientPaint peut être assez lourde, évites d'en créer 3000, plutôt passer par une image qui sera utilisée une fois et une seule par toute les instances de tes JMenu.

  3. #3
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    Re bonjour,
    j'ai fais les modifications suggérées mais c'est le même résultat...


    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
     
    	protected void paintComponent(Graphics g) {
     
    		if (!isOpaque()) {
    			return;
    		}
     
    		int width  = getWidth();
    		int height = getHeight();
    		Graphics2D g2 		= 	(Graphics2D) g;
     
    		g2.setPaint(
    				new GradientPaint(new Point(0, 0),TOP_COLOR,
    						new Point(width,0), MIDLE_COLOR));
    		g2.fillRect(0, 0, width, height);
     
    		super.paintComponent(g);
    	}
    sinok tu me dis de mettre le super.paintComponent à la fin mais du coup c'est comme si je ne faisait rien vu qu'il va dessiner par dessus mon paintComponent à moi non ?
    En tous cas avec ce code j'ai le menu de base ...

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765

Discussions similaires

  1. Comment changer l'apparence d'une fenêtre
    Par bandit boy dans le forum C++Builder
    Réponses: 13
    Dernier message: 26/06/2011, 16h12
  2. [.Net 2.0 VB/C#] Changer l'apparence des bordures
    Par oodini dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/06/2006, 09h41
  3. [Java 3D] Changer l'apparance d'objets WaveFront
    Par otarie10 dans le forum 3D
    Réponses: 1
    Dernier message: 10/04/2006, 10h20
  4. Changer l'apparence du graph dans un TChart
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/10/2005, 21h55
  5. [JFrame] Changer l'apparence avec un look and feel
    Par ixterm dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 04/10/2005, 15h14

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