Bouton rond

momjunior Messages postés 7 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 octobre 2011 - 20 janv. 2010 à 22:20
momjunior Messages postés 7 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 octobre 2011 - 20 janv. 2010 à 22:35
Bonjour,
J'ai la classe suivante qui permet de créer un bouton rond avec une image au-dessus:


import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.geom.RoundRectangle2D;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.JButton;
 
public class BoutonRond extends JButton {
 
private Image img;
public BoutonRond(String aNameString){
super(aNameString);
                setContentAreaFilled(false);
                try {
                    img = ImageIO.read(new File(aNameString));
           } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
           }
}

@Override
protected void paintComponent(Graphics g) {

Graphics2D g2d=(Graphics2D) g;

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
int w = getWidth();
                int h = getHeight();
RoundRectangle2D.Float r2d =new RoundRectangle2D.Float(0, 0, w-1 , h-1, 30, 30);
g2d.clip(r2d);

        GradientPaint gradient = new GradientPaint(0, 0, Color.white, 0, h, Color.gray, false);
g2d.setPaint(gradient);
g2d.fillRect(0,0,w,h);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_OFF);
g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
super.paintComponent(g);
 
}
}
 


Malheureusement quand je crée un bouton de type BoutonRond,le chemin que je donne en parametre apparait aussi sur
le bouton,c'est à dire que si je fais par exemple BoutonRond boutonOk = new BoutonRond("images/reception.png")
je devrais avoir seulement une image png sur le bouton.Mais le chemin aussi apparait sur le bouton.
Merci d'avance

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
20 janv. 2010 à 22:30
Salut,

Cela vient de ton appel au constructeur du JButton :
public BoutonRond(String aNameString){
super(""); // si tu ne passe plus le chemin, il ne sera plus affiché !
                setContentAreaFilled(false);
                try {
                    img = ImageIO.read(new File(aNameString));
           } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
           }
}

______________________________________
DarK Sidious
0
momjunior Messages postés 7 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 octobre 2011
20 janv. 2010 à 22:35
Wouuuuuuuh merci,ça marche.En plus la réponse fut rapide.
Merci infiniment
0