/* BoutonImage.java deux boutons affichant une image Sur un click, l'image est cachée ou montrée; sur le bouton de droite le fond du bouton est affichée, alors que sur celui de gauche, c'est une autre image qui est affichée. On utilise ici un Button de la bibliothèque AWT, sur lequel on place une image. Le fond de la fenêtre reçoit également une image. Chargement de 3 images. Classes: BoutonImage: construction de fenêtre et programme principal BtImage: extension de la classe java.awt.Button Reflexe: action sur les boutons (cacher/montrer l'image) */ import java.awt.*; import java.awt.event.*; public class BoutonImage extends Frame { Image fond,img1,img2; public BoutonImage() { // Charger deux images et un fond fond=getToolkit().getImage("gif/fond.gif"); img1=getToolkit().getImage("gif/img1.gif"); img2=getToolkit().getImage("gif/img2.gif"); // Fenêtre avec deux boutons BtnImage b1=new BtnImage(img1,fond), b2=new BtnImage(img2,null); this.setLayout(new GridLayout(1,2,20,10)); this.add(b1); this.add(b2); // Actions sur bouton Reflexe rfx=new Reflexe(); b1.addActionListener(rfx); b2.addActionListener(rfx); // Fermeture fenêtre WindowAdapter pf = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }; }; this.addWindowListener(pf); } public void paint (Graphics g) { // Trace une image en fond Insets marge=this.getInsets(); // les marges internes du cadre int x=marge.left, xx=this.getWidth()-marge.right, y=marge.top, yy=this.getHeight()-y-marge.bottom; g.drawImage(img1,x,y,xx,yy,Color.blue,this); } public static void main(String[] args) { BoutonImage f = new BoutonImage(); f.setTitle("Boutons AWT"); f.setSize(170,140); f.setLocation(50,100); f.setVisible(true); } } /** Images sur un bouton; sur un clic l'image est cachée ou inversement */ class BtnImage extends Button { Image img, fond, active; final int m=7; // marge entre l'image et le bord du bouton BtnImage(Image i, Image f){ active=img=i; fond=f; } public void paint (Graphics g) { // Image avec un bandeau if(active==null) g.clearRect(0,0,0,0); else g.drawImage(active,m,m,this.getWidth()-2*m,this.getHeight()-2*m, Color.white, this); } } class Reflexe implements ActionListener { Reflexe() {} public void actionPerformed(ActionEvent e) { BtnImage bi = (BtnImage)(e.getSource()); // basculer image/fond et afficher if(bi.active==bi.fond) bi.active=bi.img; else bi.active=bi.fond; bi.repaint(); } } // fin BoutonImage