import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.font.*; public class Exo1 extends Frame { Exo1() { setSize(100,175); MonBouton mb1 = new MonBouton(40,40,"test1",Color.red,Color.blue); MonBouton mb2 = new MonBouton(40,40,"test2",Color.pink,Color.green); MonBouton mb3 = new MonBouton(40,40,"test3",Color.yellow,Color.black); MonBouton mb4 = new MonBouton(40,40,"test4",Color.red,Color.white); MonBouton mb5 = new MonBouton(40,40,"test5",Color.blue,Color.yellow); MonBouton mb6 = new MonBouton(40,40,"test6",Color.black,Color.white); setLayout(new FlowLayout()); add(mb1); add(mb2); add(mb3); add(mb4); add(mb5); add(mb6); addWindowListener(new WindowAdapter () { public void windowClosing (WindowEvent e) {System.exit(0);}} ); } public static void main(String[] args) { Exo1 e = new Exo1(); e.setVisible(true); } } class MonBouton extends Canvas implements MouseListener { Color c1,c2; Color c; String label; int width; int height; MonBouton(int w, int h, String l, Color c1, Color c2) { label = l; this.c1 = c1; this.c2 = c2; c = c1; width = w; height = h; setSize(w,h); addMouseListener(this); } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g.setColor(c); g.fillRect(0,0,width,height); g.setColor(Color.black); g.drawRect(0,0,width-1,height-1); FontRenderContext frc = g2.getFontRenderContext(); Rectangle2D rect = g2.getFont().getStringBounds(label,frc); g.drawString(label,(int)(width/2-rect.getWidth()/2),height/2); } public void mouseClicked(MouseEvent e) { if (c == c1) c = c2; else c = c1; repaint(); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }