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

📄 drawpanel.java

📁 一个java写的画图程序, 由两个类组成,不用改直接就可用
💻 JAVA
字号:
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.math.*;
import java.io.*;


//画板类
class drawPanel extends JPanel implements Serializable
{
	private Graphics2D comp2D;

	private int fromX;
	private int fromY;
	private int toX;
	private int toY;

//	直线坐标数组
	private int[] lineFromX=new int[1000];
	private int[] lineFromY=new int[1000];
	private int[] lineToX=new int[1000];
	private int[] lineToY=new int[1000];
//	直线坐标数组计数
	private int lineCount=0;


//	矩形坐标数组
	private int[] rectFromX=new int[1000];
	private int[] rectFromY=new int[1000];
	private int[] rectToX=new int[1000];
	private int[] rectToY=new int[1000];
//	矩形坐标数组计数
	private int rectCount=0;


//	椭圆坐标数组
	private float[] ellipseFromX=new float[1000];
	private float[] ellipseFromY=new float[1000];
	private float[] ellipseToX=new float[1000];
	private float[] ellipseToY=new float[1000];
//	椭圆坐标数组计数
	private int ellipseCount=0;


//	动态判断图形标志,数字布尔变量
//	1=line
//	2=rect
//	3=ellipse
	private int numBoolean;

	
    //构造方法
	public drawPanel()
	{
       setBackground(Color.white);
       setBorder(BorderFactory.createRaisedBevelBorder());
       //设置观感是:windows
       try
	   {
		   UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
	   	   SwingUtilities.updateComponentTreeUI(drawPanel.this);
	   	}
        catch(Exception err) { err.printStackTrace(); }
	}


    //鼠标拖动事件,动态显示
	public void dynamic(int from_X,int from_Y,int to_X,int to_Y)
	{

		fromX=from_X;
		fromY=from_Y;
		toX=to_X;
		toY=to_Y;
	}


    //传递已经画完的图像
	public void dynamicArray(int from_X,int from_Y,int to_X,int to_Y,int num_boolean )
	{
		numBoolean=num_boolean;
		if(numBoolean==1)
		{
			lineFromX[lineCount]=from_X;
			lineFromY[lineCount]=from_Y;
			lineToX[lineCount]=to_X;
			lineToY[lineCount]=to_Y;
			lineCount++;
	    }
	    else
	    if(numBoolean==2)
	    {
			rectFromX[rectCount]=from_X;
			rectFromY[rectCount]=from_Y;
			rectToX[rectCount]=to_X;
			rectToY[rectCount]=to_Y;
			rectCount++;
		}
		else
		if(numBoolean==3)
		{
			ellipseFromX[ellipseCount]=from_X;
			ellipseFromY[ellipseCount]=from_Y;
			ellipseToX[ellipseCount]=to_X;
			ellipseToY[ellipseCount]=to_Y;
			ellipseCount++;
		}
	}



	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		Graphics2D comp2D=(Graphics2D)g;

        //鼠标拖动事件,动态画直线
		if(numBoolean==1)comp2D.drawLine(fromX,fromY,toX,toY);
		//显示已经画完的直线数组
		for(int num=0;num<lineToX.length;num++)
		comp2D.drawLine(lineFromX[num],lineFromY[num],lineToX[num],lineToY[num]);

        //鼠标拖动事件,动态画矩形
	    if(numBoolean==2)
	    {
		    if((toX>fromX)&&(toY>fromY))
			{
			comp2D.drawRect(fromX,fromY,toX-fromX,toY-fromY);
			}
			else if((toX<fromX)&&(toY<fromY))
			{
	            comp2D.drawRect(toX,toY,fromX-toX,fromY-toY);
			}
			else if((toX>fromX)&&(toY<fromY))
			{
				comp2D.drawRect(fromX,toY,toX-fromX,fromY-toY);
			}
			else if((toX<fromX)&&(toY>fromY))
			{
				comp2D.drawRect(toX,fromY,fromX-toX,toY-fromY);
			}
		}

		//显示已经画完的矩形数组
		for(int num=0;num<rectFromX.length;num++)
		{

			if((rectToX[num]>rectFromX[num])&&(rectToY[num]>rectFromY[num]))
			{

				comp2D.drawRect(rectFromX[num],rectFromY[num],rectToX[num]-rectFromX[num],rectToY[num]-rectFromY[num]);
			}
			else if((rectToX[num]<rectFromX[num])&&(rectToY[num]<rectFromY[num]))
			{
				comp2D.drawRect(rectToX[num],rectToY[num],rectFromX[num]-rectToX[num],rectFromY[num]-rectToY[num]);
			}
			else if((rectToX[num]>rectFromX[num])&&(rectToY[num]<rectFromY[num]))
			{
				comp2D.drawRect(rectFromX[num],rectToY[num],rectToX[num]-rectFromX[num],rectFromY[num]-rectToY[num]);
			}
			else if((rectToX[num]<rectFromX[num])&&(rectToY[num]>rectFromY[num]))
			{
				comp2D.drawRect(rectToX[num],rectFromY[num],rectFromX[num]-rectToX[num],rectToY[num]-rectFromY[num]);
			}

		}


		//鼠标拖动事件,动态画椭圆
		if(numBoolean==3)
		{

			if((toX>fromX)&&(toY>fromY))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(fromX,fromY,toX-fromX,toY-fromY);
				comp2D.draw(ellipse);

			}
			else if((toX<fromX)&&(toY<fromY))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(toX,toY,fromX-toX,fromY-toY);
				comp2D.draw(ellipse);

			}
			else if((toX>fromX)&&(toY<fromY))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(fromX,toY,toX-fromX,fromY-toY);
				comp2D.draw(ellipse);

			}
			else if((toX<fromX)&&(toY>fromY))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(toX,fromY,fromX-toX,toY-fromY);
				comp2D.draw(ellipse);

			}

		}

        //显示已经画完的椭圆数组
		for(int num=0;num<ellipseFromX.length;num++)
		{
			if((ellipseToX[num]>ellipseFromX[num])&&(ellipseToY[num]>ellipseFromY[num]))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(ellipseFromX[num],ellipseFromY[num],
				ellipseToX[num]-ellipseFromX[num],ellipseToY[num]-ellipseFromY[num]);
				comp2D.draw(ellipse);
			}
			else if((ellipseToX[num]<ellipseFromX[num])&&(ellipseToY[num]<ellipseFromY[num]))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(ellipseToX[num],ellipseToY[num],
				ellipseFromX[num]-ellipseToX[num],ellipseFromY[num]-ellipseToY[num]);
				comp2D.draw(ellipse);

			}
			else if((ellipseToX[num]>ellipseFromX[num])&&(ellipseToY[num]<ellipseFromY[num]))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(ellipseFromX[num],ellipseToY[num],
				ellipseToX[num]-ellipseFromX[num],ellipseFromY[num]-ellipseToY[num]);
				comp2D.draw(ellipse);

			}
			else if((ellipseToX[num]<ellipseFromX[num])&&(ellipseToY[num]>ellipseFromY[num]))
			{
				Ellipse2D ellipse=new Ellipse2D.Float(ellipseToX[num],ellipseFromY[num],
				ellipseFromX[num]-ellipseToX[num],ellipseToY[num]-ellipseFromY[num]);
				comp2D.draw(ellipse);

			}

		}

	}

	//清空数组
	public void clear()
	{
		for(int i=0;i<1000;i++)
		{
			lineFromX[i]=0;
			lineFromY[i]=0;
			lineToX[i]=0;
			lineToY[i]=0;

			rectFromX[i]=0;
			rectFromY[i]=0;
			rectToX[i]=0;
			rectToY[i]=0;

			ellipseFromX[i]=0;
			ellipseFromY[i]=0;
			ellipseToX[i]=0;
			ellipseToY[i]=0;

			fromX=0;
			fromY=0;
			toX=0;
			toY=0;
		}
	}

}

⌨️ 快捷键说明

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