All pastes #994545 Raw Edit

Mine

public text v1 · immutable
#994545 ·published 2008-04-23 14:01 UTC
rendered paste body
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) {
    }
}