画板小结


画板
 之前一直学习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;
  
}

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

你可能感兴趣的:(java,swing)