⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 colitest.java

📁 java2D图形冲突检测方法
💻 JAVA
字号:
import java.applet.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class ColiTest extends Applet implements MouseListener,MouseMotionListener
{
	private final int NUM_RECTS = 10;
	private LinkedList rectangles;
	private AlphaComposite alpha;
	private Rectangle2D pick;
	private Panel p;
	private Label j ;
	public void init()
	{   p = new Panel();
		j = new Label();
		rectangles = new LinkedList();
		pick = null;
		alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f);
		Random r = new Random();
		int width = (int)getSize().getWidth();
		int height = (int)getSize().getHeight();
		for(int i = 0;i<NUM_RECTS;i++)
		{
			rectangles.add(new Rectangle2D.Double((double)(Math.abs(r.nextInt())%width),
			                                       (double)(Math.abs(r.nextInt())%height),
			                                       (double)(20+Math.abs(r.nextInt())%50),
			                                       (double)(20+Math.abs(r.nextInt())%50)));
		} 
		p.setBackground(Color.BLUE);
		p.add(j);
		setLayout(new BorderLayout());
		add(p,BorderLayout.SOUTH);
		addMouseListener(this);
		addMouseMotionListener(this);
	}
	public void paint(Graphics g)
	{   //j.setText("鼠标在");
		Graphics2D g2d=(Graphics2D)g;
		g2d.setComposite(alpha);
		g2d.setPaint(Color.BLACK);
		for(int i = 0;i<NUM_RECTS;i++)
		  {
			g2d.draw((Rectangle2D.Double)rectangles.get(i));
		   }
		if(pick != null)
		 {
		 	Rectangle2D rect;
		 	g2d.setPaint(Color.RED.darker());
		 	for(int i = 0;i<NUM_RECTS;i++)
		 	{
		 		rect = (Rectangle2D)rectangles.get(i);
		 		if(pick != rect && pick.intersects(rect))
		 		 {
		 			g2d.fill(rect);
		 		  }
		 	 }
		g2d.setPaint(Color.BLUE.brighter());
	    g2d.fill(pick);
		 }
	}	 
	 public void mouseClicked(MouseEvent e){/*j.setText("["+e.getX()+","+e.getY()+"]");*/}//当鼠标指针停留在某一组件上,按下并释放鼠标按按纽时被调用
	 public void mouseEntered(MouseEvent e){}//当鼠标指针进入某一构件件的区域时调用
	 public void mouseExited(MouseEvent e){j.setText("[窗口外]");}//当鼠标指针被移出某一构件区域时被调用
	 public void mousePressed(MouseEvent e)//当鼠标指针在某一组件上,并且按下鼠标按纽时被调用
	  {  //j.setText("["+e.getX()+","+e.getY()+"]");
	 	if(pick == null)
	 	  {
	 	  	Rectangle2D rect;
	 	  	for(int i = 0;i<NUM_RECTS;i++)
	 	  	   {
	 	  	   	rect=(Rectangle2D)rectangles.get(i);
	 	  	   	  if(rect.contains(e.getPoint()))
	 	  	   	     {
	 	  	   	     	pick = rect;
	 	  	   	     	return;
	 	  	   	      }
	 	  	   	
	 	  	   	}
	      }
	 }
	 public void mouseReleased(MouseEvent e)//当鼠标按纽按下并且移动鼠标时调用,该事件发生在PRESS事件之后
	  { //j.setText("["+e.getX()+","+e.getY()+"]");
	 	pick = null;
	 	repaint();
	   }
	 public void mouseDragged(MouseEvent e)//当鼠标指针在某一构件上按下后,再释放鼠标按纽时调用,发生在PRESS事件之后
	  {j.setText("["+e.getX()+","+e.getY()+"]");
	  	if(pick != null)
	  	   {
	  	   	pick.setRect(e.getX(),e.getY(),pick.getWidth(),pick.getHeight());
	  	   	repaint();
	  	   }
	  }
	 public void mouseMoved(MouseEvent e){j.setText("["+e.getX()+","+e.getY()+"]");}//当鼠标指针指在某一构件上并移动鼠标按纽时调用
	  
	 
	 
	 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -