读书人

画夹小结

发布时间: 2012-12-21 12:03:49 作者: rapoo

画板小结


画板
?之前一直学习Java的基础理论,画板是我尝试的第一个小项目,很兴奋。
?呵呵,这个画板,只是实现了一些简单的功能,例如画直线、圆、曲线、调色板等
?像画直线、圆,Java API包下有现成的函数drawLine、 drawOval,直接调用就可以,需要费点心思的就是
?调色板、曲线、重绘。
?
?调色板
?调色板就是在画板上添加一个按钮,用“匿名内部类”的方法为按钮添加监听器,了解一个“匿名内部类”就行了

?匿名内部类就是在当前类内部再添加一个监听类,功能是为按钮添加监听。

//以"匿名内部类"的形式创建了一个事件监听器对象java.awt.event.ActionListener al=  new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {// 调用弹出调色板的方法buttonAction();}};//按钮发生时,创建一个color选择框private void buttonAction(){//弹出一个Color选择框java.awt.Color  c=javax.swing.JColorChooser.showDialog(this, "请选择一种你要画的Color", java.awt.Color.RED);System.out.println("用户选中的color是: "+c);ml.setColor(c); }

??
?重绘
?创建一个自定义队列,每画一个图形就把它添加到队列中
?创建一个Graph类,来保存需要重绘的内容,如形状、颜色、坐标等;

public class Graph {//颜色private java.awt.Color color;//形状private String item;//坐标private int x1, y1, x2, y2;//构造函数用来初始化属性public Graph(String item,java.awt.Color color,int x1,int y1,int x2,int y2){this.item = item;this.color = color;this.x1 = x1;this.y1 = y1;this.x2 = x2;this.y2 = y2;}}

??
?
?曲线
?曲线的实现要利用鼠标拖动事件,在鼠标拖动时实现画曲线。画曲线是通过画直线来实现的,当直线足够短时,就可以画曲线

/** * 鼠标按下时的拖动事件处理方法(曲线包含重绘) */public void mouseDragged(MouseEvent e) {x2 = e.getX();y2 = e.getY();//设置颜色g.setColor(df.getColor());// 画曲线 g.drawLine(x1, y1, x2, y2);//创建一个Graph类的对象Graph graph = new Graph("曲线",df.getColor(),x1,y1,x2,y2);//将对象添加到队列中graphList.add(graph);//交换坐标一定要放在重绘之后,否则会出现错误x1 = x2;y1 = y2;  }

??
??其实真正的画板是有点复杂的,我的这个画板只是个开始,以后随着学习的深入会逐步完善它的一些功能。
??渐渐喜欢上了用程序来表达自己的想法,喜欢上了敲键盘的感觉,喜欢上了遇到问题解决问题,最终只要自己想要的达到了,?之前再费劲都是值得的。

读书人网 >编程

热点推荐