实现画板画百度熊之后的选择按钮和颜色按钮

实现画板画百度熊之后的选择按钮和颜色按钮

 DrawUI.java
import java.awt.Graphics;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import  java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class DrawUI {
		//显示界面的方法
	public void showUI() { 
		//创建窗体对象
		JFrame drawFrame = new JFrame();
		//设置属性
		drawFrame.setSize(1000, 600);
		drawFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		drawFrame.setLocationRelativeTo(null);
		
		FlowLayout flowl = new FlowLayout();//流式布局
		drawFrame.setLayout(flowl);
		
		//创建监听器
		DrawListener drawL = new DrawListener();
		//添加监听器
		drawFrame.addMouseListener(drawL);
		
		Button login1 = new Button("直线");//建立图形选择按钮
		Dimension size = new Dimension(360,35);//大小
		login1.setPreferredSize(size);
		drawFrame.add(login1);
		
		Button login2 = new Button("小熊");//建立图形选择按钮
		login2.setPreferredSize(size);
		drawFrame.add(login2);
		
		
		/* DrawListener2 loginL = new DrawListener2();//设置监听器
		 DrawListener2 loginR = new DrawListener2();//设置监听器
			login1.addActionListener(loginL);//给按钮加监听器
			login2.addActionListener(loginR);//给按钮加监听器
			loginL.pic1 = login1;//给监听器赋值
		    loginR.pic2=  login2;//赋值*/


	 /*//图形文字数组
		String[] textArr = {"直线","小熊","小猫"};
		//循环创建按钮
		for(int i=0; i<textArr.length; i++) {
			//创建按钮
			JButton btn =new JButton(textArr[i]);
			//添加按钮
			drawFrame.add(btn);
			//添加监听器
			btn.addActionListener(drawL);
		}*/
		
		login1.addActionListener(drawL);
		login2.addActionListener(drawL);
		    
		//设置一个可以改变为红色的按钮
		JButton redbtn = new JButton();
		//设置按钮背景色为红
		redbtn.setBackground(Color.red);
		//设置按钮的大小
		Dimension colorBtnSize = new Dimension(28,28);
		redbtn.setPreferredSize(colorBtnSize);
		//将红色按钮添加到窗体上
		drawFrame.add(redbtn);
		//添加监听器
		redbtn.addActionListener(drawL);
				
		//设置可见
		drawFrame.setVisible(true);
		//获取画布
		Graphics g = drawFrame.getGraphics();
		//给监听器的属性赋值
		drawL.setGraphics(g);
		
		drawFrame.setVisible(true);
		}

	//主方法
	public static void main(String[] args) {
		//创建界面对象
		DrawUI ui = new DrawUI();
		//显示界面
		ui.showUI();
	}	
}

创建按钮:

1.Button btn = new Button(); //new一个btn
2.Dimension size = new Dimension(360,35); //设置按钮大小
3.btn.setPreferredSize(size); //参数放入
4.drawFrame.add(btn); //把btn按钮放进drawFrame上
5.把提前设置好的监听器drawL加按钮
DrawListener drawL = new DrawListener(); //在自己已经定义好的DrawListenenr()里new一个drawL
drawFrame.addMouseListener(drawL); //在drawFrame中添加drawL

(btn).addActionListener(drawL); //把对按钮的监听器加入

**
下面是DrawListener.java的代码
**

DrawListenenr.java

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import java.awt.event.ActionEvent;

public class DrawListener implements MouseListener, ActionListener{

	//记录坐标的信息
	int x1,y1,x2,y2;
	
	//画布
	private Graphics g;
	
	//保存图形信息
	String shapeText = "直线";
	//保存颜色信息,是初始的线条的颜色
	Color curColor = Color.black;
		
	//设置画布的方法
	public void setGraphics(Graphics g) {
		this.g = g;
	}
	
	public void actionPerformed(ActionEvent e) {
		//获取按钮的信息
				String action = e.getActionCommand();
				shapeText = action;
				if("".equals(action)) {
					//因为getActionCommand()方法无法get颜色信息
					//获取事件源,getSource的目标是Object
					Object srcObj = e.getSource();
					//获取按钮,子类换成父类要强制转换
					JButton srcBtn = (JButton)srcObj;
			        //h获取颜色,要在画直线处进行设置
					Color srcColor = srcBtn.getBackground();
					//保存颜色
					curColor = srcColor;
				}
	}
	
	public void mousePressed(MouseEvent e) {
		//获取坐标
		x1 = e.getX();
		y1 = e.getY();
	
	}
    public void mouseReleased(MouseEvent e) {
    	//获取坐标
    	x2 = e.getX();
    	y2 = e.getY();
    	
    	g.setColor(curColor);
    	
    	if("直线".equals(shapeText)) {
    	//画线
    		
    	g.drawLine(x1, y1, x2, y2);
    	}
    	else if("小熊".equals(shapeText)) {
    	
    	//画熊
    	//头
    	Color color = new Color(224,178,142);
    	g.setColor(color);
    	g.fillOval(x1, y1, 110, 100);
    	//眼睛
    	g.setColor(Color.WHITE);
    	g.fillOval(x1+20, y1+32, 18, 24);
    	g.setColor(Color.WHITE);
    	g.fillOval(x1+75, y1+32, 18, 24);
    	//眼黑
    	g.setColor(Color.BLACK);
    	g.fillOval(x1+23, y1+36, 10, 14);
    	g.setColor(Color.BLACK);
    	g.fillOval(x1+78, y1+36, 10, 14);
    	//嘴巴
    	Color colorhui =new  Color(248,246,229);
    	g.setColor(colorhui);
    	g.fillOval(x1+37, y1+50, 40, 30);
    	//鼻子
    	g.setColor(Color.BLACK);
    	g.fillOval(x1+53, y1+50, 9, 9);
    	//左耳朵
    	g.setColor(color);
    	g.fillOval(x1+3, y1+3, 22, 22);
    	//右耳朵
    	g.setColor(color);
    	g.fillOval(x1+84, y1+3, 22, 22);
    	
    	}
    	//输出
    	System.out.println("起点("+x1+","+y1+"),终点("+x2+","+y2+")");
    }
    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
	
}

注意项:
1.直接在DrawListener后implements MouseListener,ActionListener两个类。

在J2SE中查找ActionEvent,可见四个方法。如图在这里插入图片描述
要得到按钮反馈的信息。首先排除返回值为int的getModifiers(),long的getWhen()。通过一个输出判断,paramString()不返回需要的信息值。但是getActionCommand()返回值为按钮上的“小熊”或者“直线”。所以调用getActionCommand(),
String action = e.getActionCommand();
shapeText = action;

再通过if(“小熊”.equals(shapeText))或者if(“直线”.equals(shapeText))作比较,便可以得出正确的按钮调用。

设置颜色按钮

设置颜色按钮时,本可以在按钮上比如显示一个“红”“黑”“黄”等字样去单独表示。但是颜色按钮这样表示的话就不直观,所以可以改为直接把按钮改成一样的颜色,用户在使用的时候便可以方便许多。

前面的按钮信息是通过getActionCommand()访问,但是观察发现,getActionCommand()并不能够返回与颜色相关的值。在J2SE中查看getSource()信息。在这里插入图片描述

      在DrawUI.java中
                //设置一个可以改变为红色的按钮
        		JButton redbtn = new JButton();
            	//设置按钮背景色为红
             	redbtn.setBackground(Color.red);
        		//设置按钮的大小
            	Dimension colorBtnSize = new Dimension(28,28);
             	redbtn.setPreferredSize(colorBtnSize);
	            //将红色按钮添加到窗体上
	             drawFrame.add(redbtn);
	            //添加监听器
	             redbtn.addActionListener(drawL);
	             
	在DrawListener.java中
	
                //获取事件源,getSource的目标是Object
				Object srcObj = e.getSource();
				//获取按钮,子类换成父类要强制转换
				JButton srcBtn = (JButton)srcObj;
		        //h获取颜色,要在画直线处进行设置
				Color srcColor = srcBtn.getBackground();
				//保存颜色
				curColor = srcColor;

通过这几步获取颜色信息,并将按钮的背景色,设置为改颜色,本例以红色为例。

到这里,代码目标就已经基本实现,效果如图:从上到下就是黑色直线,切换到小熊,切换到红色直线的效果。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值