对JAVA简单监听和方法调用的初步理解——以简单画图板为例

画图板目标:

  1. 绘制一个画图板界面
  2. 实现鼠标动作的监听,实现简单的功能

首先,绘制一个画图板的界面。一个界面作为对象应具有的元素包括但不限于:大小、位置、底色、开关等等。画图板中应有各个按钮,并应合理规划这些按钮的位置。
我先定义了Drawing类,下面按代码来说明自己的理解。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Drawing draw=new Drawing();
		draw.iniUI();
	}

这是Java中的一个接口,类似于C++中的主函数。通过接口来执行里面的代码。利用Drawing类实例化了一个draw的画图板对象,并通过该对象调用了方法iniUI。在方法iniUI中,实现刚才的设想,部分代码如下。

JFrame jf=new JFrame();
		jf.setSize(1200,800);
		jf.setDefaultCloseOperation(3);
		jf.setTitle("画图板");
		jf.setLocationRelativeTo(null);
		jf.setLayout(new FlowLayout());
String functionarray[]= {"直线","圆","矩形","文字","图片","三角形","曲线","正方体","橡皮擦","喷枪"};
		for(int i=0;i<functionarray.length;i++) {
			JButton jb=new JButton(functionarray[i]);
			jb.setPreferredSize(new Dimension(80,50));
			jb.addActionListener(all);
			jp1.add(jb);
		}

上一块代码中利用JAVA原有的类JFrame实例化了一个jf对象,通过jf对象调用了各种方法,如settitle设置姓名等。第二块代码则用了循环和add方法将各个按钮加在这个界面上。其中JButton是JAVA的按钮类。这样就可以初步得到一个界面。

下面是增加监听类。我将其命名为ALLlistener。
JAVA提供了许多种监听,而实现画图板功能必须要监听鼠标的各个移动因此就用到了ActionListener、MouseListener和MousemotionListener。其中,MouseListener包含了鼠标的按下,松开,单击(双击),进入,离开这几个监听方法。MousemotionListener则包括了鼠标的拖动和移动这两个监听方法。
将所有类型的监听都写入同一个监听类下。同时,监听类需要多个接口类的方法(implements)。以画直线为例,你需要知道鼠标点击时的坐标和松开时的坐标,再用画笔(由画笔类实例化)将两点连起来即可。代码如下:

public void mouseClicked(MouseEvent e) {
		if(count==2) {
			x3=e.getX();//得到x坐标
			y3=e.getY();//得到y坐标
			System.out.println(count);
			g.drawLine(x1, y1, x3, y3);//g为画笔对象
			g.drawLine(x2, y2, x3, y3);
			count=0;
			//此处count用于画三角形与纯粹画直线无关
		}
	}

那么,如何让监听类与界面中的各个对象有联系呢?这就需要给各个对象增加监听。
ALLlistener all=new ALLlistener(); all.jf=jf;
在界面类中实例化一个监听类的对象,并将界面类中界面的各种属性赋值给该对象。接着,给需要增加监听的对象增加监听,通过addActionListener等方法给按钮加监听器。

jf.addMouseListener(all);
jf.addMouseMotionListener(all);

此时,这个界面就增加了鼠标监听器,监听的具体内容,均在all的对象里通过各种方法实现。
一个简单的具有画直线功能的画图板就完成了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值