All pastes #2127446 Raw Edit

Mine

public text v1 · immutable
#2127446 ·published 2012-03-12 21:34 UTC
rendered paste body
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 *
 * @author Administrator
 */
public class DrawPanel extends JPanel implements Runnable, MouseListener, MouseMotionListener{
    
    private Thread animator;
    private final int DELAY = 50;
    
    boolean play=false;
        
    JLabel Txt = new JLabel("Coordinate");
    ArrayList objectList = new ArrayList();
    Graphics offBuffer;
    Beam beam;
    Image offImage;
    boolean isDrawing = false;
    public DrawPanel(){
        super();
        setPreferredSize(new Dimension(500,495));
        setVisible(true);
        setBackground(Color.red);
        Txt.setOpaque(true);
        add(Txt);
        addMouseMotionListener(this);
        addMouseListener(this);
        setDoubleBuffered(true);

        
         beam = new Beam();
   add(beam);      
    }

    public void addComponentInPanel(GameObject pObject)
    {
        objectList.add(pObject);
    }
     @Override
    public void update(Graphics g){
           paint(g);
       }
    @Override
    public void paintComponent(Graphics g){

        if(offBuffer== null)
        {
            offImage = createImage(500,495);
            offBuffer = offImage.getGraphics();
        }
        
        beam.offBuffer=offBuffer;
        
        beam.setBounds(0, 0, 100, 100); 
        
        for(int i = 0;i<objectList.size();i++)
        {
            GameObject base = (GameObject)objectList.get(i);
            
            if(base.GetType() == GameObject.MirrorType.ConcaveLensType)
            {
                //ConcaveLens lens = (ConcaveLens)base;
                //lens.paintComponent(offBuffer);
                
            }
            else if(base.GetType() == GameObject.MirrorType.ConvexLensType)
            {
//                ConvexLens lens = (ConvexLens)base;
//                lens.paintComponent(offBuffer);
            }
            else  if(base.GetType() == GameObject.MirrorType.ConcaveMirrorType)
            {
//                ConcaveMirror lens = (ConcaveMirror)base;
//                lens.paintComponent(offBuffer);
            }
             else  if(base.GetType() == GameObject.MirrorType.ConvexMirrorType)
            {
//                ConvexMirror lens = (ConvexMirror)base;
//                lens.paintComponent(offBuffer);
            }
            else    if(base.GetType() == GameObject.MirrorType.PlainMirrorType)
            {
//                PlainMirror lens = (PlainMirror)base;
//                lens.paintComponent(offBuffer);
            }
            else     if(base.GetType() == GameObject.MirrorType.PrismaType)
            {
//                Prism lens = (Prism)base;
//                lens.paintComponent(offBuffer);
            }
             else     if(base.GetType() == GameObject.MirrorType.AirToWaterType)
            {
                //TODO
            }
             else     if(base.GetType() == GameObject.MirrorType.WaterToAirType)
            {
                //TODO
            }
        }
        offBuffer.setColor(Color.black);
        Txt.setLocation(15, 480);
        int XXX=10;//x coordinate of the point where drawing starts
        int YYY=5;//x coordinate of the point where drawing starts
        int no=48; // value of no should be at the most frameSize/10
        int size=10; //size of each box

        setBackground(new Color(40,40,80));
 
        for(int j=0;j<no;j++)
        {
            offBuffer.drawLine(XXX, YYY+j*size, XXX+470, YYY+j*size);
        }
        for(int j=0;j<no;j++)
        {
            offBuffer.drawLine(XXX+j*size, YYY, XXX+j*size, YYY+470);
        }
        g.drawImage(offImage, 0, 0, this);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
       
    }

    @Override
    public void mousePressed(MouseEvent e) {
       int asdas=1;
       String test = e.getComponent().getName();
       asdas =1;
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    if(!isDrawing )
        return;
    if(e.getComponent().getName() == "ConcaveLensButton")
    {
        ConcaveLens lens = new ConcaveLens();
        addComponentInPanel(lens);
        lens.setLocation(getMousePosition());
        lens.offBuffer = offBuffer;
        //lens.img = offImage;
        
        lens.addMouseListener(lens);
        
        lens.setBounds(getMousePosition().x, getMousePosition().y, 100, 100);

        
        this.add(lens);
           update(offBuffer);
       
    }
    else if(e.getComponent().getName() == "ConvexLensButton")
    {
        ConvexLens lens = new ConvexLens();
        addComponentInPanel(lens);
        lens.setLocation(getMousePosition());
        lens.offBuffer = offBuffer;
        lens.addMouseListener(lens);
        lens.setBounds(getMousePosition().x, getMousePosition().y, 100, 100);

        
        this.add(lens);
           update(offBuffer);
        
    }
//    else if(e.getComponent().getName() == "ConvexLens")
//    {
//        
//    }
     else if(e.getComponent().getName() == "MirrorButton")
    {
        PlainMirror mirror = new PlainMirror();
        addComponentInPanel(mirror);
        mirror.setLocation(getMousePosition());
        mirror.addMouseListener(this);
        mirror.offBuffer = offBuffer;
        //mirror.addMouseListener(mirror);
        mirror.setBounds(getMousePosition().x, getMousePosition().y, 100, 100);
        
        
        this.add(mirror);
           update(offBuffer);
    }
     else if(e.getComponent().getName() == "ConcaveMirrorButton")
    {
        ConcaveMirror mirror = new ConcaveMirror();
        addComponentInPanel(mirror);
        mirror.setLocation(getMousePosition());
        mirror.offBuffer = offBuffer;
        mirror.addMouseListener(mirror);
        mirror.setBounds(getMousePosition().x, getMousePosition().y, 100, 100);

        
        this.add(mirror);
           update(offBuffer);
    }
     else if(e.getComponent().getName() == "ConvexMirrorButton")
    {
         ConvexMirror mirror = new ConvexMirror();
        addComponentInPanel(mirror);
        mirror.setLocation(getMousePosition());
        mirror.offBuffer = offBuffer;
        mirror.addMouseListener(mirror);
        mirror.setBounds(getMousePosition().x, getMousePosition().y, 100, 100);

        
        this.add(mirror);
           update(offBuffer);
    }
     else if(e.getComponent().getName() == "PrismButton")
    {
        
    }
     else if(e.getComponent().getName() == "WaterToAirButton")
    {
        
    }
      else if(e.getComponent().getName() == "AirToWaterButton")
    {
        
    }

     repaint();         
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        if(e.getSource() == this)
            isDrawing = true;
    }

    @Override
    public void mouseExited(MouseEvent e) {
       isDrawing = false;
    }

    @Override
    public void mouseDragged(MouseEvent e) {
      
    }

    @Override
    public void mouseMoved(MouseEvent e) {
      if(e.getX()<10 || e.getX()>470 || e.getY()<5 || e.getY()>470 ||e.getComponent() != this)
         Txt.setText("                                               ");
      else
      {
          Txt.setText("Point("+ (e.getX()-10)+","+ (e.getY()-5)+")");
      }
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
		long beforeTime, timeDiff, sleep;
        play=true;
        beforeTime = System.currentTimeMillis();
        int sasd=1;
        while (play) {

            gameLoop();
            update(offBuffer);
           
            timeDiff = System.currentTimeMillis() - beforeTime;
            sleep = 1 - timeDiff;

            if (sleep < 0)
                sleep = 2;
            try {
                animator.sleep(50);
            } catch (InterruptedException e) {
                System.out.println("interrupted");
            }

            beforeTime = System.currentTimeMillis();
            sasd++;
            
            repaint();
            updateUI();
            if(!play)
                animator.yield();
            
        }	
        

    }
    
    public void gameLoop() {
        
        beam.updateBeam();
        for(int i = 0;i<objectList.size();i++)
        {
            GameObject base = (GameObject)objectList.get(i);
            
            if(base.GetType() == GameObject.MirrorType.PlainMirrorType)
            {
            
                Rectangle rec=  base.getBounds();
                if(rec.contains(beam.GetCor()))
                {
                    play=false;
                    break;
                }
            }
            
        }
        
        
        
        
    }

    public void pause() {
        
        play=false;
        animator.yield();
    }

    void start() {
        animator = new Thread(this);
        animator.start();
    }

    
}