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