// MODULE: CanevasTest.java // AUTEUR: IFT1170 // OBJET: montrer les canevas // et la gestion de la souris (une partie) import java.awt.*; import java.awt.image.*; import java.awt.event.*; class MonCanvas extends Canvas implements ActionListener { private int x=-10,y=-10; private Image image; // constructeur juste pour creer l'image public MonCanvas() { image = Toolkit.getDefaultToolkit().getImage("RALI.gif"); } public void update(Graphics g) {paint(g);} // pour eviter l'effacement public void paint(Graphics g) { g.fillOval(x,y,7,7); } public void actionPerformed (ActionEvent e) { // dans tous les cas, on efface la zone d'affichage getGraphics().clearRect(0,0,getWidth(),getHeight()); if (e.getActionCommand().equals("logo")) { getGraphics().drawImage(image,50,50,this); } } public void repaint(int x, int y) { this.x = x; this.y = y; repaint(); } } // ----------------------------------------------- // test des canvas // ----------------------------------------------- public class CanevasTest extends FenetreFermante { private int xValue, yValue; // le constructeur public CanevasTest(int l,int h, String titre) { super(l,h); setTitle(titre); Button top = new Button("top"); Button west = new Button("logo"); Button east = new Button("east"); Button south = new Button("efface"); final MonCanvas center = new MonCanvas(); // gestion du deplacement de la souris center.addMouseMotionListener( new MouseMotionAdapter() { public void mouseDragged (MouseEvent e) { xValue = e.getX(); yValue = e.getY(); center.repaint(xValue,yValue); } } ); center.setBackground(Color.yellow); // que faire lorsque l'on clique sur efface ou logo south.addActionListener(center); west.addActionListener(center); add(top,BorderLayout.NORTH); add(west,BorderLayout.WEST); add(east,BorderLayout.EAST); add(south,BorderLayout.SOUTH); add(center,BorderLayout.CENTER); show(); } public static void main(String [] args) { new CanevasTest(330,230,"Zone de dessin"); } }