创意画板——(java)小游戏(2)

创意画板——画三角形,矩形等

接着我们上一篇的画一条直线,今天我们来进阶画图形。
代码如下还是由两个类组成

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class DrawUI {
    //定义按钮和颜色的字符串
    String[] btnstrs = {"直线","矩形","圆","三角形","递归图形","迭代分形","撤回","清空"};
    Color[] colors ={
    Color.WHITE,Color.YELLOW,Color.BLACK,Color.BLUE,Color.RED,Color.MAGENTA,
            Color.GRAY,Color.LIGHT_GRAY,Color.PINK,Color.GREEN,Color.CYAN
    };
	public void initUI() {
		//创建一个窗口
		JFrame jf=new JFrame();
		jf.setTitle("画板");
		jf.setSize(800,600);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
		
		//添加流式布局管理器
		FlowLayout fl = new FlowLayout();
        jf.setLayout(fl);
        //添加画笔
		Graphics g = jf.getGraphics();
		//创建画板监听器的对象
		DrawListener dl=new DrawListener();
		
        Dimension dim = new Dimension(100,40); //按钮的尺寸
	        for (int i = 0; i < btnstrs.length; i++) {
	            addButton(btnstrs[i],dim,Color.white,dl,jf);
	        }
	        Dimension colordim = new Dimension(40,40);//颜色按钮的尺寸
	        for (int i = 0; i < colors.length; i++) {
	            addButton("",colordim,colors[i],dl,jf);
	        }
		dl.g2=g;
		jf.addMouseListener(dl);	
	}
	
    public void addButton(String btnstr,Dimension dim, Color color, ActionListener al,JFrame jf){
        JButton btn = new JButton(btnstr);
        btn.setBackground(color);
        btn.setPreferredSize(dim);
        jf.add(btn);
        btn.addActionListener(al);
    }
    
	public static void main(String[] args) {
		DrawUI d =new DrawUI();
		d.initUI();

	}
}

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

public class DrawListener implements MouseListener,ActionListener { 
	int x1,x2,y1,y2;
	Graphics g2; // 定义画笔
    String shapeStr="";
    
    public void actionPerformed(ActionEvent e){
          String btnstr = e.getActionCommand();// 字符串
          System.out.println("点击了"+btnstr);

           if(btnstr.equals("")){
               JButton btn = (JButton) e.getSource();
               System.out.println("按钮对象:"+btn.getText());
               Color btnBgcolor = btn.getBackground();
               g2.setColor(btnBgcolor);
           }else{
               shapeStr=btnstr;
           } 
}

	public void mouseClicked(MouseEvent e){

		}
	public void mousePressed(MouseEvent e){
           	x1=e.getX();
			y1=e.getY();
			System.out.println("按下");
		}

	public void mouseReleased(MouseEvent e){
			x2=e.getX();
			y2=e.getY();
			g2.drawLine(x1,y1,x2,y2);// 画线
			 if (shapeStr.equals("直线")){
		            g2.drawLine(x1,y1,x2,y2);
		        }else if(shapeStr.equals("矩形")){
		            // 左上角的坐标 宽 高
		            g2.drawRect(min(x1,x2),min(y1,y2),abs(x2-x1),abs(y2-y1));
		        }else if(shapeStr.equals("圆")){
		            // 外切矩形 左上角的坐标 宽 高
		            g2.drawOval(Math.min(x1,x2),min(y1,y2),abs(x2-x1),abs(y2-y1));
		        }
  	     System.out.println("松开");
		}
		   public int min(int a,int b){
		        return a < b ? a : b;
		    }
		    public int abs(int a){
		        return a < 0 ? -a : a;
		    }
	=
		public void mouseEntered(MouseEvent e){
		}
	=
		public void mouseExited(MouseEvent e){
		}
	}


效果如图:
在这里插入图片描述

这里面还有一些复杂的问题,在这里我没有详细说明,例如换颜色的时候怎么做到区别颜色按钮和文字按钮的背景板颜色。不懂的小伙伴私信我,我们一起讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真真最可爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值