package crashproject; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; class DrawingPanel extends JPanel { Image img; DrawingPanel (Image img) { this.img = img; } @Override public void paintComponent (Graphics g) { super.paintComponent (g); //Draw image centered in the middle of the panel g.drawImage (img, 0, 0, this); } } public class JMainFrame extends JFrame implements MouseListener, MouseMotionListener { private BufferedImage backBuffer; private Graphics2D bf; private DrawingPanel pannel; //debug int lx,ly; public JMainFrame() { //debug lx=-1; ly=-1; //Frame's properties setTitle("Crash Project"); setBounds(100,100,500,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create the components JButton send=new JButton("Send"); //add listenners addMouseMotionListener(this); addMouseListener(this); //create the backbuffer backBuffer=new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_BYTE_BINARY); bf = backBuffer.createGraphics(); bf.drawRect(0, 0, backBuffer.getWidth(), backBuffer.getHeight()); bf.setColor(Color.white); bf.drawString("Je suis mupuf !!", 100, 100); //create the pannel pannel=new DrawingPanel(backBuffer); //Set the layout Panel p = new Panel(); Container c = getContentPane(); p.setLayout(new BorderLayout()); p.add(send, BorderLayout.EAST); c.add(pannel,BorderLayout.CENTER); c.add(p,BorderLayout.SOUTH); } public void mouseDragged(MouseEvent e) { //Avoid java's bug with lines if(lx>=0 && ly>=0) { int x1,x2,y1,y2; if(ly>e.getY()) { x1=e.getX(); y1=e.getY(); x2=lx; y2=ly; } else { x2=e.getX(); y2=e.getY(); x1=lx; y1=ly; } bf.drawLine(x1, y1, x2, y2); //repaint (opti à faire ici) repaint(); } //Get the new coordinates lx=e.getX(); ly=e.getY(); } public void mouseMoved(MouseEvent e) { //System.out.println("Je suis passé par mouseMoved"); } public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { lx=-1; ly=-1; } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }