java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

目前画板实现了多边形、橡皮擦、吸管、铅笔、刷子、直线、矩形、椭圆的功能 基本思路:1. 将窗体分为左、中、下面板2. 左边添加按钮并设置相应的方法在中面板进行绘图3. 将已画出图形进行重绘4. 颜色设置目前还没完成,做完了再更新 总共五个类:DBFrame:入口;负责主窗口的各种设置JpDown: 是JPanel的子类,负责下面板的设置JpCenter: 是JPanel的子类,负责中心面板的绘制,与重绘功能的实现JpLeft: 是JPanel的子类,负责左边面板的按钮设置,按钮图像通过按钮对象的.setIcon、.setRolloverIcon、.setPressedIcon、.setSelectedIcon进行设置MouActive:是MouseMotionAdapter和MouseListener的子类,负责各按钮功能与重绘。 重点写MouActive中对上述各功能方法的实现过程首先通过对当前选定按钮的命令判断当前按钮1.多边形(伪代码):

public void mouseReleased(MouseEvent e) {if(bl){		   //bl默认设置true,表示画第一条直线				gr.drawLine(x1, y1, x2, y2); //x1,y1是按下点坐标、x2,y2是释放点坐标				bl = false;				xfirst = x1;  //最后结束图形时,需要连接第一个点,先存起来				yfirst = y1;			}else{				gr.drawLine(x3, y3, x2, y2);			}		x3 = x2;//非第一条直线,需要存储先一次的释放点坐标作为这一次起始点			y3 = y2;}	public void mouseClicked(MouseEvent e) {		Count = e.getClickCount();		//多边形最后双击结束		if(Count==2){			gr.drawLine(xfirst, yfirst, x2, y2);			bl = true;		}	}

2.橡皮擦(伪代码)

public void mouseReleased(MouseEvent e) {x2 = e.getX();//获取当前释放点坐标			y2 = e.getY();			gr.setColor(Color.white);//设置画笔颜色为中心面板底色			((Graphics2D)gr).setStroke(new BasicStroke(8));//设置宽度为8			((Graphics2D)gr).drawLine(x1, y1, x2, y2);//画直线;x1,y1是按下点坐标			x1 = x2;//将先一次的释放点作为下一次起始点存储起来			y1 = y2;			((Graphics2D)gr).setStroke(new BasicStroke(1));//将画笔宽度设回1}

3. 吸管(伪代码)

public void mouseReleased(MouseEvent e) {x2 = e.getXOnScreen();//取得当前坐标位置			y2 = e.getYOnScreen();			try {		//使用机器人类Robot需要使用try catch				Robot bo = new Robot();				Color color = bo.getPixelColor(x2, y2);//取到当前位置点的像素颜色				gr.setColor(color);//设置画笔颜色为刚刚取的颜色			} catch (AWTException e1) {				// TODO Auto-generated catch block				e1.printStackTrace();			}}

4. 铅笔(伪代码)

public void mouseReleased(MouseEvent e) {x2 = e.getX();//取当前点坐标			y2 = e.getY();			gr.drawLine(x1, y1, x2, y2);//画直线			x1 = x2; //将先一次的释放点作为下一次起始点存储起来				y1 = y2;}

5. 刷子(伪代码)

public void mouseReleased(MouseEvent e) {x2 = e.getX();//取当前点坐标			y2 = e.getY();			gr = (Graphics2D)gr;//将Graphics强转			for(int i=0;i<30;i++){						int rdint0 = (int)(Math.random()*10)-5; //随机在当前位置点附近取点				int rdint1 = (int)(Math.random()*10)-5;				gr.drawLine(x1+rdint0, y1+rdint1, x2+rdint0, y2+rdint1);//绘点			}			x1 = x2; //将先一次的释放点作为下一次起始点存储起来				y1 = y2;}

6.直线(伪代码)

public void mouseReleased(MouseEvent e) {x2 = e.getX();//取当前点坐标			y2 = e.getY();			gr.drawLine(x1, y1, x2, y2);//画直线}

7.矩形(伪代码)

public void mouseReleased(MouseEvent e) {x2 = e.getX();//取当前点坐标			y2 = e.getY();			g.drawRect(Math.min(x2, x1), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));}

8.椭圆(伪代码)

public void mouseReleased(MouseEvent e) {x2 = e.getX();//取当前点坐标		y2 = e.getY();	g.drawOval(Math.min(x2, x1), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));}

重绘功能(多态):通过重新定义一个Shapes类,封装按下点x1,y1与释放点x2,y2和画笔颜色等属性。直线重绘定义LineShapes类、矩形重绘定义RectShapes类、椭圆重绘定义OvalShapes类分别继承Shapes类,并在重绘类中进行draw方法进行不同的重写。将不同的对象放在同一个ArrayList中,然后在JpCenter中遍历ArrayList中的对象,并调用对象的draw方法。 注意:不同类中的参数互相调用,可以再主函数中进行类的实例化时,通过构造函数的重载进行传参
JAVA多态继承

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。