小白第一步|JAVA画图板实现——功能切换问题

前面我们已经以生(nan)动(dong)的语言讲述了使用Graphics类的方法
温习一遍
Graphics类是抽象类,要在外部用组件的getGraphics()函数定义后传回使用;

而现在了解到事件分为三类:鼠标事件,键盘事件,动作事件
其中鼠标接口强调于鼠标的位置,动作接口强调于鼠标的点击等动作;
我们本次要做的事情是按按钮后切换功能(画直线,画矩形啥的)
那这个功能是什么接口的功能呢?
没错!!!就是我们可爱的动作事件(还可以开启自闭模式的那个事件)
在这里插入图片描述
知道了是什么接口以后,我们首先要做的就是把这个接口给接上
当然的是我们之前画图用过的鼠标事件
implements语句:

public class mouse implements MouseListener,ActionListener{
}

同时f3后找到ActionListener接口的抽象方法,在mouse类中重新定义

public void actionPerformed(ActionEvent e){
}

下面就是在定义的按钮上安上这个神奇的监听器
由于我们有关图形的切换按钮的功能一致,都是点一下之后切换画图功能,我们选择用循环结构来简化我们的代码过程,同时用字符串来区分每个按钮
代码如下

		//设置按钮的名字
		String[] name = {"直线","矩形","椭圆"};
		for(int i=0;i < name.length;i++){
			//创建按钮对象
			JButton button = new JButton(name[i]);
			//设置尺寸
			Dimension d = new Dimension(60, 60);
			button.setPreferredSize(d);
			//设置监听器
			button.addActionListener(m);
			//将按钮加到窗体上
			line.add(button);
		}

有关颜色的切换按钮我们暂时搁置,因为我还不会嘻嘻嘻嘻
然后我们在ActionListener中的actionPerformed方法中实现对功能的切换
代码如下

public void actionPerformed(ActionEvent e){
		//获取按钮文本,其中ty已在类中明确定义;
		ty = e.getActionCommand();

public void mousePressed(MouseEvent e) {	
		x1 = e.getX();
		y1 = e.getY();
	}

public void mouseReleased(MouseEvent e) {
		x2 = e.getX();
		y2 = e.getY();
		if(ty == "直线"){
			g.drawLine(x1, y1, x2, y2);
		}
		else if(ty == "矩形"){
		//选取最小点作为绘画的起点,实现对左下,左上,右下,右上的同步处理
			int x,y,width,height;
			if(x1 < x2){
				x = x1;
				width = x2 - x1;
			}
			else{
				x = x2;
				width = x1 - x2;
			}
			if(y1 < y2){
				y = y1;
				height =y2 - y1;
			}
			else{
				y = y2;
				height =y1 - y2;
			}
			g.drawRect(x, y, width, height);
		}
		else if(ty == "椭圆"){
			int x,y,width,height;
			if(x1 < x2){
				x = x1;
				width = x2 - x1;
			}
			else{
				x = x2;
				width = x1 - x2;
			}
			if(y1 < y2){
				y = y1;
				height =y2 - y1;
			}
			else{
				y = y2;
				height =y1 - y2;
			}
			g.drawOval(x, y, width, height);
		}
		drawDream(g);
	}

这样我们就很容易的实现了按钮控制的相关功能
在这里插入图片描述
(这个是带颜色板的,但是很可惜的是我还不会选择颜色后更改,所以暂时先放放
我会补上的!!!!!

本期over!

发布了36 篇原创文章 · 获赞 11 · 访问量 2915

猜你喜欢

转载自blog.csdn.net/yeweij226/article/details/90261243