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 :

récupere la couleur de fond d'un JButton


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut récupere la couleur de fond d'un JButton
    Bonsoir

    Je souhaite redessiner un JButton de telle facon à ce qu'il ait un roundedBorder, j'ai donc étendu la classe JButton et redefini les fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    protected void paintComponent(Graphics g){
    }

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    protected void paintBorder(Graphics g){
    }
    maintenant le problème c'est que je veut bien modifier la forme du JButton, mais je ne veux pas perdre sa couleur originale de fond (le bleu gradué)

    Quelqu'un peut il m'aider svp??

    merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    Je crois que j'ai pas poster ma question dans le bon forum, prière de transferer mon poste là ou il faut.

    Désolé

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    Je viens de trouver la solution dans le forum.

    Voici un lien pour ceux qui sont interessés.
    http://www.developpez.net/forums/d52...rvant-degrade/

  4. #4
    Membre confirmé Avatar de colocolo
    Inscrit en
    Février 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 166
    Par défaut
    salut;

    Citation Envoyé par master_och Voir le message
    Je viens de trouver la solution dans le forum.
    comment t'a utiliser la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected void paintComponent(Graphics g)
    {
      Graphics2D g2 = (Graphics2D) g;
      Color color1 = Color.white;
      Color color2 = this.getBackground();
      g2.setPaint(new GradientPaint(0, 0, color1, this.getWidth(), this.getHeight(), color2));
      g2.fillRect(0, 0, this.getWidth(), this.getHeight());
      super.paintComponent(g);
    }

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    En fait j'ai pas utilisé la fonction comme elle est biensure, je me suis juste inspiré de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2.setPaint(new GradientPaint(0, 0, color1, this.getWidth(), this.getHeight(), color2));
    c'est cette ligne qui te permettra de coloré ton bouton avec une couleur graduée.

    enfin si cela t'interesse voici le code que j'ai utilisé pour redessiner mon bouton:

    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    public class MonButton extends JButton implements MouseListener {
    	private static final long serialVersionUID = 1L;
    	private Color background=new Color(184, 207, 229);
    	private Color bordercolor=new Color(149, 194, 251);
    	private Color borderanime=new Color(149, 194, 251);
    	private Color foreground=Color.black;
    	private Font myfont=new Font("Palatino Linotype", Font.BOLD, 12);
    	private int marge=10;
    	boolean mouseexited=true;
    	boolean pressed=false;
     
    	public MonButton(){
    		super();
    		this.addMouseListener(this);
    	}
     
    	public MonButton(String text){
    		super(text);
    		this.addMouseListener(this);
    		this.addItemListener(this);
    	}
     
    	protected void paintComponent(Graphics g){
    		if(!pressed){
    			Graphics2D g2 = (Graphics2D) g;
    			g2.setPaint(new GradientPaint(0, this.getHeight()-1, this.background, 0, this.getHeight()/3,Color.white,true));
    			g2.fillRoundRect(0, 0, this.getWidth()-1, this.getHeight()-1,22,12);
    		}
    		else{
    			g.setColor(background);
    			g.fillRoundRect(0, 0, this.getWidth()-1, this.getHeight()-1,22,12);
    		}
    		g.setFont(myfont);
    		g.setColor(foreground);
    		this.drawtext(g,this.getWidth(), this.getHeight());
     
    	}
     
    	private Dimension gettextsize(Graphics g,String s){
    		FontMetrics fm=g.getFontMetrics();
    		int w=fm.stringWidth(s);
    		int h=fm.getAscent()+fm.getDescent();
    		return new Dimension(w,h);
    	}
     
    	private void drawtext(Graphics g,int w,int h){
    		String ch=new String(this.getText());
    		Dimension d=this.gettextsize(g,ch);
    		FontMetrics fm=g.getFontMetrics();
    		if(d.width>w-2*marge){
    			int ind=this.getText().length()-1;
    			boolean b=true;
    			for(;b&&ind>=0;ind--){
    				b=fm.stringWidth(ch+"...")>w-2*marge;
    				ch=ch.substring(0, ind);
    			}
    			ch+="...";
    			d=this.gettextsize(g, ch);
    		}
    		int x=(w-d.width)/2;
    		int y=fm.getAscent()+(h-d.height)/2;
    		g.drawString(ch, x, y);
    	}
     
     
     
    	protected void paintBorder(Graphics g){
     
    		if(mouseexited)
    			g.setColor(bordercolor);
    		else{
    			g.setColor(this.borderanime);
    			g.drawRoundRect(1,1, this.getWidth()-2, this.getHeight()-2, 22, 12);
    		}
    		g.drawRoundRect(0, 0, this.getWidth()-1, this.getHeight()-1, 22, 12);
    	}
     
     
    	public void mouseClicked(MouseEvent arg0) {
    	}
     
    	public void mouseEntered(MouseEvent arg0) {
    		mouseexited=false;
    		this.repaint();
    	}
     
    	public void mouseExited(MouseEvent arg0) {
    		mouseexited=true;
    		this.repaint();
    	}
     
    	public void mousePressed(MouseEvent arg0) {
    pressed=true;
    this.repaint();
    	}
    	public void mouseReleased(MouseEvent arg0) {
    pressed=false;
    this.repaint();
    	}
    }

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/01/2015, 16h24
  2. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 11h16
  3. Couleur de fond JButton
    Par SebastianPx dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 19/02/2009, 12h25
  4. [Jbutton] parametrer la couleur de fond
    Par ibelieve dans le forum Composants
    Réponses: 7
    Dernier message: 04/07/2005, 13h04
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 02h37

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