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

📄 ping.java

📁 网络监控的图形开发方案
💻 JAVA
字号:
package ping.com;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;

import javax.swing.JPanel;








public class HelloWorld extends Frame{
	
	int count=6;
	Vector v=new Vector();
	Image[] img=new Image[count];
	int myWidth=0,myHeight=0;
	int widthcount=0;
	boolean[] b=new boolean[count];
	int[] width=new int[count],height=new int[count],w=new int[count],h=new int[count],wid=new int[count],hei=new int

	[count],ww=new int[count],hh=new int[count];
	int startX=0,startY=0,endX=0,endY=0;
	Canvas startObj=null,endObj=null;
	String drawclear="";
	int clickX=0,clickY=0,moveX=0,moveY=0;
	canvas[] can=null;
	myCanvas[] mycan=new myCanvas[count];
	Canvas curcan=null;
	Canvas curdelcan=null;
	Image curimg=null;
	JPanel jp=new JPanel(null);
	myCanvas drawLine=new myCanvas("drawLine");
	MediaTracker mt=new MediaTracker(this);

	
	//Image[] im=new Image[6];
	public HelloWorld()
	{
		super("Image Test");
		setSize(800,600);
		this.setVisible(true);
		setLayout(null);
		img[0]=Toolkit.getDefaultToolkit().getImage("D:/workspace/jiankong/src/1.jpg");
		img[1]=Toolkit.getDefaultToolkit().getImage("D:/workspace/jiankong/src/6.jpg");
		img[2]=Toolkit.getDefaultToolkit().getImage("D:/workspace/jiankong/src/3.jpg");
		img[3]=Toolkit.getDefaultToolkit().getImage("D:/workspace/jiankong/src/4.jpg");
		img[4]=Toolkit.getDefaultToolkit().getImage("D:/workspace/jiankong/src/5.jpg");
		img[5]=Toolkit.getDefaultToolkit().getImage("D:/workspace/jiankong/src/6.jpg");

		
		for(int i=0;i<img.length;i++)
		    mt.addImage(img[i], 0);
		try 
		{
		 mt.waitForAll();
		} catch(Exception ex) {System.err.println(ex.toString());}
       
       add(jp);
       
       jp.add(this.drawLine);//往工具栏上添加线型图标
       jp.setBackground(new Color(230,230,230));//设置线形图标背景
       drawLine.setBounds(5,40,90,30);//放置线形图标

       drawLine.addMouseListener(new MouseAdapter() 
       {
         public void mousePressed(MouseEvent e) 
        {
        clickdrawLine(e);
       }   });
     for(int i=0;i<img.length;i++) 
       {  
    	   mycan[i]=new myCanvas(img[i]);
          width[i]=img[i].getWidth(this);
          height[i]=img[i].getHeight(this);
          jp.add(mycan[i]);
          mycan[i].setBounds(100+5*(i+1)+widthcount,40,img[i].getWidth(this),img[i].getHeight(this));
          this.validate();
          this.setVisible(true);
          widthcount+=img[i].getWidth(this);
        }
		
		addWindowListener(new WindowAdapter() {
		public void windowClosing(WindowEvent event){
			dispose();
			System.exit(0);
		}
		});
	this.addMouseListener(new MouseAdapter()
	   {
	     public void mouseClicked(MouseEvent e) 
	     {
	       clickhere(e);
	     }
	                                           });

	}
public void clickhere(MouseEvent e) {
		
	if(this.curcan==null)return;
	if(e.getModifiers()==MouseEvent.BUTTON1_MASK) {
		  int x=e.getX();
		  int y=e.getY();
		 
		
	  Canvas ca=new canvas(curimg,"hhh");
	  this.add(ca);
	  
	  ca.setBounds(x,y,curimg.getWidth(this),(curimg.getHeight(this)+30));
	  this.validate();
		  }
	  
	}

	public void clickdrawLine(MouseEvent e) {
		if(drawLine.getBackground().equals(new Color(230,230,255))) {
		  drawLine.setBackground(new Color(230,230,230));
		  startObj=null;
		  endObj=null;
		  drawclear="";
		} else {
		  drawLine.setBackground(new Color(230,230,255));
		  drawclear="draw";
		}
	}
	class canvas extends Canvas {
		Image im=null;
		String str;
		
		public canvas(Image im,String name) {
		super();
	    str=name;
		
		this.setCursor(new Cursor(Cursor.MOVE_CURSOR));
		this.im=im;
		this.addMouseListener(new MouseAdapter() {
		  public void mousePressed(MouseEvent e) {
		    clickcanvas(e);
		  }
		});
		this.addKeyListener(new KeyAdapter() {
		  public void keyPressed(KeyEvent e) {
		    if(e.getKeyCode()==KeyEvent.VK_DELETE)
		      removecanvas(e);
		  }
		});

		this.addMouseMotionListener(new MouseMotionAdapter() {
		  public void mouseDragged(MouseEvent e) {
		    movecanvas(e);
		  }
		});
		}

		public void movecanvas(MouseEvent e) {
		Canvas mcan=(Canvas)e.getSource();
		int mtop=mcan.getY(),mleft=mcan.getX(),mwidth=mcan.getWidth(),mheight=mcan.getHeight();
		mcan.setBounds(mleft+e.getX()-clickX,mtop+e.getY()-clickY,mwidth,mheight);
		for(int i=0;i<v.size();i++) {
		  Vector v1=(Vector)v.elementAt(i);
		  if(((Canvas[])v1.elementAt(0))[0].equals(mcan)) {
		    ((int[])v1.elementAt(1))[0]=mcan.getX();
		    ((int[])v1.elementAt(1))[1]=mcan.getY();
		    ((int[])v1.elementAt(1))[2]=mcan.getWidth();
		    ((int[])v1.elementAt(1))[3]=mcan.getHeight();
		  } else if(((Canvas[])v1.elementAt(0))[1].equals(mcan)) {
		    ((int[])v1.elementAt(1))[4]=mcan.getX();
		    ((int[])v1.elementAt(1))[5]=mcan.getY();
		    ((int[])v1.elementAt(1))[6]=mcan.getWidth();
		    ((int[])v1.elementAt(1))[7]=mcan.getHeight();
		  }
		}
		((HelloWorld)this.getParent()).repaint();
		}

		public void removecanvas(KeyEvent e) {
		try {
		  Canvas mcan=(Canvas)e.getSource();
		  ((HelloWorld)this.getParent()).remove(curdelcan);
		  for(int i=v.size()-1;i>=0;i--) {
		    Vector v1 = (Vector) v.elementAt(i);
		    if(((Canvas[])v1.elementAt(0))[0].equals(mcan)||((Canvas[])v1.elementAt(0))[1].equals(mcan))
		      v.removeElementAt(i);
		  }
		  ((HelloWorld)this.getParent()).validate();
		  ((HelloWorld)this.getParent()).repaint();
		}catch(NullPointerException ex){return;}
		}


		public void clickcanvas(MouseEvent e) {
		  curdelcan=(Canvas)e.getSource();
		  clickX=e.getX();
		  clickY=e.getY();
		  ((HelloWorld)this.getParent()).repaint();
		  if(((HelloWorld)this.getParent()).drawclear.equals(""))return;
		  if(((HelloWorld)this.getParent()).startObj==null&&((HelloWorld)this.getParent()).endObj==null)
		    ((HelloWorld)this.getParent()).startObj=(Canvas)e.getSource();
		  else if(((HelloWorld)this.getParent()).startObj!=null&&((HelloWorld)this.getParent()).endObj==null&&((HelloWorld)this.getParent

		()).startObj!=(Canvas)e.getSource()) {
		    ((HelloWorld)this.getParent()).endObj=(Canvas)e.getSource();
		    Vector v1=new Vector();
		    v1.addElement(new Canvas[]{startObj,endObj});
		    v1.addElement(new int[]{startObj.getX(),startObj.getY(),startObj.getWidth(),startObj.getHeight(),endObj.getX

		(),endObj.getY(),endObj.getWidth(),endObj.getHeight()});
		    v.addElement(v1);
		    ((HelloWorld)this.getParent()).drawclear="";
		    
		     ((HelloWorld)this.getParent()).drawLine.setBackground(null);
		    ((HelloWorld)this.getParent()).startObj=null;
		    ((HelloWorld)this.getParent()).endObj=null;
		  }
		}

		public void paint(Graphics g) {
			for(int i=0;i<v.size();i++) {
				  Vector v1=(Vector)v.elementAt(i);
				  startX = ((int[])v1.elementAt(1))[0] + ((int[])v1.elementAt(1))[2] / 2;
				  startY = ((int[])v1.elementAt(1))[1] + ((int[])v1.elementAt(1))[3] / 2;
				  endX = ((int[])v1.elementAt(1))[4] + ((int[])v1.elementAt(1))[6] / 2;
				  endY = ((int[])v1.elementAt(1))[5] + ((int[])v1.elementAt(1))[7] / 2;
				  
				  g.drawLine(startX, startY, endX, endY);
				  drawArrowhead(g,((Canvas[])v1.elementAt(0))[0],((Canvas[])v1.elementAt(0))[1]);
				}
		}
		public void drawArrowhead(Graphics g,Canvas startObj,Canvas endObj) {
			double xx=0,yy=0,xx1=0,yy1=0,xx2=0,yy2=0;
			myWidth=myHeight=(int)Math.pow((double)(Math.pow(endObj.getWidth(),2d)+Math.pow(endObj.getHeight(),2d)),1/2d)/2;
			xx=endX-(endX-startX)*myWidth/Math.pow((double)(endX-startX)*(endX-startX)+(double)(endY-startY)*(endY-startY),1/2d);
			yy=endY-(endY-startY)*myHeight/(Math.pow((double)(endX-startX)*(endX-startX)+(double)(endY-startY)*(endY-startY),1/2d));
			xx1=xx-20*Math.cos(Math.atan(((double)yy-startY)/((double)xx-startX))-radians(30));
			yy1=yy-20*Math.sin(Math.atan(((double)yy-startY)/((double)xx-startX))-radians(30));
			xx2=xx-20*Math.sin(radians(60)-Math.atan(((double)(yy-startY))/((double)(xx-startX))));
			yy2=yy-20*Math.cos(radians(60)-Math.atan(((double)(yy-startY))/((double)(xx-startX))));
			if(startObj.getX()+startObj.getWidth()/2>endObj.getX()+endObj.getWidth()/2) {
			  xx1=xx+20*Math.cos(Math.atan(((double)yy-startY)/((double)xx-startX))-radians(30));
			  yy1=yy+20*Math.sin(Math.atan(((double)yy-startY)/((double)xx-startX))-radians(30));
			  xx2=xx+20*Math.sin(radians(60)-Math.atan(((double)(yy-startY))/((double)(xx-startX))));
			  yy2=yy+20*Math.cos(radians(60)-Math.atan(((double)(yy-startY))/((double)(xx-startX))));
			}
			g.fillPolygon(new int[]{(int)xx2,(int)xx1,(int)xx},new int[]{(int)yy2,(int)yy1,(int)yy},3);
			}
		public double radians(int degrees) {
			  return ((double)degrees)*Math.PI/180.0;
			}
		}
	
	public void paint(Graphics g){
	//	g.drawString("hello",80,80);
		//g.drawImage(im[0], 60, 60, this);
   }
	

	class myCanvas extends Canvas {
		Image imc=null;
		String str="";
		public myCanvas(String s) {
		super();
		this.str=s;
		}

		public myCanvas(Image img) {
		super();
		this.setCursor(new Cursor(Cursor.HAND_CURSOR));
		this.imc=img;
		this.addMouseListener(new MouseAdapter() {
		  public void mousePressed(MouseEvent e) {
		    clickmyCanvas(e);
		  }
		});
		}

		public void clickmyCanvas(MouseEvent e) {
		  ((HelloWorld)this.getParent().getParent()).drawLine.setBackground(null);
		  ((HelloWorld)this.getParent().getParent()).drawclear="";
		  ((HelloWorld)this.getParent().getParent()).startObj=null;
		  ((HelloWorld)this.getParent().getParent()).endObj=null;
		  curcan=(Canvas)e.getSource();
		  curimg=(Image)imc;
		}

		public void paint(Graphics g) {
		//g.drawImage(img[1],80,180,this);
		if(str.equals(""))
		  g.drawImage(imc,0,0,this);
		else {
		  g.drawString(str,20,getHeight()/2);
		  g.drawString(str, 40, 80);
		  }
		}
		
}
		
public static void main(String arg[]){
	HelloWorld h=new HelloWorld();
}
}

⌨️ 快捷键说明

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