画图板

  • 画图板

接着上节课QQ界面的设计,这节课我们主要学习如何设计出一个能进行基本绘图的Java画板,在界面上用鼠标画出直线,矩形,圆等基本图形。

,首先我们需要创建一个界面,上节课我们已经学会了如何创建界面,现在可以学以致用了。创建界面的步骤如下:

a.新建一个界面类,定义一个显示界面的方法
b.创建窗体对象,设置窗体属性值,大小、显示位置、布局等
c.创建元素组件对象,设置各个组件的属性,添加元素组件到顶级组件窗体上
d.设置窗体可见 //这一步必不可少,非常重要(窗体要在添加的组件后面设置可见,否则可能出错)
e.在主方法中创建界面的对象,调用显示界面的方法。

import java.awt.Graphics;
import javax.swing.JFrame;
public class Drawpad {
	//创建一个初始化界面的方法
	public void initUI(){
		JFrame jf=new JFrame();
		jf.setTitle("七巧画图板!!!");
		jf.setSize(800,800);
		jf.setLocationRelativeTo(null);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );	
		jf.setVisible(true);	
		//取画笔 Graphics
		Graphics gl=jf. getGraphics();
		//给界面添加监听器
		DrawListener dl=new DrawListener();
		jf.addMouseListener(dl);
		dl.g=gl;//传值	
	}
	//主方法
public static void main(String[]args){
	Drawpad dp=new Drawpad();
	dp.initUI();
}
}

、鼠标监听器
在窗体上按下鼠标按键,然后释放鼠标按键,根据按下和释放的坐标值来绘制一个图形。要实现这个功能,就要用到事件监听机制,先确定事件源对象:JFrame窗体容器组件对象。使用的事件监听方法是jf.addMouseListener(dl),即鼠标动作监听方法,用来捕获事件源对象上的鼠标按键按下,释放,点击动作还会捕捉鼠标进入和离开事件源对象的动作;接着收集事件源对象的信息和动作信息,将信息交给MouseListener事件接口的对象进行处理。

注意:在实现MouseListener 接口时,重写接口中的抽象方法,对他点击鼠标右键,选择open Declaration,会弹出以下源代码,将所有的抽象方法复制过来,将每一个抽象中的分号改为花括号。

三、重新创建一个类来实现鼠标事件接口
步骤如下:
1、.定义DrawingListener事件处理类,该类实现MouseListener鼠标事件接口,重写接口中的抽象方法,

public void mouseClicked(MouseEvent e){
		System.out.println("点击");
	}
	public void mousePressed(MouseEvent e){
		System.out.println("按下");
	}	
	public void mouseReleased(MouseEvent e){		
		System.out.println("释放");
	}
	 public void mouseEntered(MouseEvent e){	
	System.out.println("进入");
	}	 
	public void mouseExited(MouseEvent e){
	 	System.out.println("离开");
	}

a.声明类中的四个属性int x1,y1,x2,y2,用来存储按下和释放的坐标值;
b.在按下的方法中获取按下坐标值;
c.在释放的方法中获取释放坐标值;
d.声明Graphics画笔对象属性,然后根据坐标值来绘制图形。

2、实例化DrawingListener事件处理类对象,命名为dl;获取窗体上的画笔对象jf.getGraphics(),然后将画笔对象传递到dl对象中的g属性。

//取画笔 Graphics
		Graphics gl=jf. getGraphics();
//给界面添加监听器
		DrawListener dl=new DrawListener();
		jf.addMouseListener(dl);
		dl.g=gl;//传值

3.给JFrame窗体事件源对象,添加addMouseListener()鼠标动作监听方法,明确事件处理类的对象为dl。实际绘图时,对于直线、矩形和圆形,Java中都有固定的作图方法,只需要两点(x1,y1),(x2,y2)就能轻易做出。但需要注意的是,绘制矩形的时候需要用到最小值min函数、绝对值abs函数来绘制矩形的四种趋向,我刚一开始用if语句来写,太累赘复杂了。

Math.min(x2, x1);
	    	Math.min(y1, y2);
	    	Math.abs(x2-x1);
	    	Math.abs(y2-y1);	
	    	g.drawRect(Math.min(x2, x1), Math.min(y1, y2),Math.abs(x2-x1), Math.abs(y2-y1));

以上就为简陋简单的界面画图板了,由于初学编程能力还不高,还有很多很多功能没有实现,一步一个脚印,慢慢来~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值