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

📄 mycanvas.java

📁 该程序为Java开发出基本的GIS最小系统
💻 JAVA
字号:
package canvassample;

import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseAdapter;
import java.awt.event.AdjustmentListener;
import java.io.*;
import java.lang.*;

/**
 * <p>Title: Cyber Canvas</p>
 *
 * <p>Description: A Canvas Application</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company:  nupt</p>
 *
 * @author not attributable JScrollPane
 * @version 1.0
 */
public class MyCanvas extends JPanel 
{       
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Color color[]={Color.BLACK,Color.blue,Color.ORANGE,Color.RED,Color.CYAN};
        //Image myImage= new Image();
       Image myImage=Toolkit.getDefaultToolkit().getImage("E:\\封超的资料\\awt\\images\\coreIcon.gif");

    	private   double i=1.0,inew;
    	 static  int x1,x2,y1,y2;
    	 static double jingdu,weidu;
        double w[]={118.540918,118.840314,118.640456,118.340452,118.440823};
	    double z[]={32.183145 ,32.283416 ,32.583751 ,32.283241 ,32.383841 };
	   ////数组w,z可用来接收从mif文件中读出的经纬度坐标
	   
	    static double blc=1000.0;
	    static double xStart=118.0;
	    static double yStart=32.0;
	  
	   int x[]=new int[1000];
	   int y[]=new int[1000];
     BorderLayout borderLayout1 = new BorderLayout();
    
  private JLabel staBar=new JLabel();
 
  public MyCanvas(JLabel statusBar) {
    try {
      staBar=statusBar;
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
  
    
    this.setLayout(borderLayout1);
   
    
    addMouseMotionListener(new MouseMotionAdapter(){
      public void mouseMoved(MouseEvent e) {
      	 jingdu=(double)e.getX()/(blc)+xStart;
      	 weidu=(double)e.getY()/(blc)+yStart;
       staBar.setText("     Mouse Moved @:[jingdu=" + jingdu +",weidu="+
                       + weidu + "]");
      
      }
      
    }
    );
    addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e) {
      	xStart=(double)x1/(blc)+xStart;
      	yStart=(double)y1/(blc)+yStart;
      //	i/=2;
      	blc=blc*i/2;
      	 staBar.setText("     Mouse Clicked blc=" + blc
                       );
   
       repaint();
      
      }
     
    }
    );
     addMouseListener(new MouseAdapter(){
      public void mousePressed(MouseEvent e) {
      	x1=e.getX();
      	y1=e.getY();
        staBar.setText("     Mouse prs blc=" + blc
                       );
      //public void mouseClick
      //repaint();
      
      }
     
    }
    );
    addMouseListener(new MouseAdapter(){
      public void mouseReleased(MouseEvent e) {
      	x2=e.getX();
      	y2=e.getY();
      
      	xStart=(double)x1/(blc)+xStart;
      	yStart=(double)y1/(blc)+yStart;
      	if(x1-x2!=0&&y1-y2!=0)
      	{
        inew=Math.min(screenSize.width/Math.abs(x1-x2),screenSize.height/Math.abs(y1-y2)) ; 
  
        blc=blc*inew;
        staBar.setText("     Mouse rls blc=" + blc
                       );
                      

       repaint();}
      
      }
     
    }
    );

   
  }
  
  public void paintComponent(Graphics g)  
  {

        super.paintComponent(g);
        setPreferredSize(new Dimension((int)(400*blc/10),(int)(308*blc/10)));
        setSize(getPreferredSize()); //可以自动添加滚动条,并且响应滚动条事件;

        g.setColor(Color.white);
        g.fillRect(0,0,this.getWidth(),this.getHeight());
        //System.out.println(this.getWidth());
        g.setColor(Color.BLUE);
        //g.drawImage(myImage,10,10,this);
        //System.out.println("in paint x1="+x1+"in paint y1="+y1);
        //System.out.println("in paint xstart="+xStart+"in paint ystart="+yStart);
        // System.out.println("in paint blc="+blc);
         //  System.out.println("*****************************************");
       g.translate(x1,y1);
       //g.drawImage(myImage,10,10,this);
       Files f=new Files();

      for (int ri=0;ri<=f.regionnum;ri++)//Draw region!
          { //System.out.println("in paint regionptnum="+f.regionptnum[ri]);
          	for(int j=0;j<f.regionptnum[ri]-1;j++)
           
           { //g.setColor(color[ri%5]);
             x[j]=(int)((f.ww[ri][j]-xStart)*blc);
             y[j]=(int)((f.zz[ri][j]-yStart)*blc);
           }
         
	       g.drawPolyline(x,y,f.regionptnum[ri]-1);
		   g.fillPolygon(x,y,f.regionptnum[ri]-1);
	      }
	   g.setColor(Color.BLUE);
		for (int a = 0; a < w.length; a++)
        {
        
         x[a]=(int)((w[a]-xStart)*blc)-x1;
         y[a]=(int)(this.getHeight()-(int)((z[a]-yStart)*blc)-y1);
        
	    }
		
		//g.drawString(""+f.pointnum+"  "+f.regionnum+"  "+f.textnum,10,10);
		
		for(int ti=0;ti<f.textnum;ti++)//Draw text!
		
		{  
		  Font font=new Font(f.textfontname[ti],Font.PLAIN,14+ti);
		 // g.setColor(color[ti]);
		  g.setFont(font);
		  g.drawString(f.text[ti],(int)((f.textx[ti]-xStart)*blc),(int)((f.texty[ti]-yStart)*blc));
		  //g.drawString(f.text[ti],20+30*ti,20+30*ti);
		   //System.out.println("in paint text[j]="+f.text[ti]);
		}
		g.drawPolyline(x,y,5);
		g.fillPolygon(x,y,5);
        g.drawString("test",100,100);
        
        
   }
} 

⌨️ 快捷键说明

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