画图界面低级版本(详细讲解每个步骤)

package com.lk.login1029;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;



//全程不看源文件和参考再加上自己的一些想法
//首先创建一个窗体
//窗体需要设置大小啊之类的;居中;当窗体关闭的时候程序自行关闭结束;
//需要给窗体添加按钮之类的;注意窗体显示出来了才能添加按钮;画笔之类的东西;
//当需求到达要添加按钮的时候就会想到添加到哪里的问题,所以就需要添加布局管理器
//当需要添加多个按钮的时候发现他们的步骤相似;所以用函数代替重复工作
//都需要添加文本;按钮自己创建;需要窗体;需要监听器
//需要给窗体装监听器;通过看原代码发现括号里面的内容需要一种接口数据类型;需要接口数据类型的时候需要重写一个类来作为数据
//需要一个数组来对与str所占位置进行填充
//当需要添加颜色按钮的时候发现;数组的内容发生了变化;因此创建一个函数重新添加全是颜色的按钮



public class DrawUI2 {
	String[] strs = {"直线","正方形","椭圆","等腰三角形","任意三角形","任意多边形"};//注意是以数组形式储存不是以列表形式
	Color[] color = {Color.black,Color.blue,Color.red,Color.green,Color.yellow};//颜色也是一种类型
 public void showUI() {
	JFrame jf =new JFrame();
	jf.setSize(900, 900);
	jf.setLocationRelativeTo(null);
	jf.setDefaultCloseOperation(3);
	jf.setVisible(true);
	FlowLayout flow =new FlowLayout();
	jf.setLayout(flow);
	
	//JButton jb =new JButton("text");
	//jf.add(jb);
	//jb.addActionListener(mouse);
	Mouse2 mou =new Mouse2();
	//给界面添加上了监听器
	jf.addMouseListener(mou);
	//添加多个按钮在界面上
	//这种一般带xxx.的不是属性就是方法
	for (int i=0;i<strs.length;i++) {
		AddButton(strs[i],jf,mou);}
	for (int i=0;i<color.length;i++) {
		AddColor(color[i],jf,mou);
	}
	 Graphics gr = jf.getGraphics();
	 mou.g = gr;
	
 }
 public void AddButton(String str,JFrame jf,ActionListener al) {
	 JButton jb = new JButton(str);
	 jf.add(jb);
	 jb.addActionListener(al);
	 
}
 public void AddColor(Color color,JFrame jf,ActionListener al) {
	 JButton jb = new JButton(" ");//空格作用增大一点按钮的大小
	 jb.setBackground(color);
	 jf.add(jb);
	 jb.addActionListener(al);
 }
 public static void main(String[] args) {
	 DrawUI2 ui=new DrawUI2();
	 ui.showUI();
	 }
 }
package com.lk.login1029;
import javax.swing.*;
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 Mouse2 implements ActionListener,MouseListener{
	Graphics g;
	String typestr,str ;
	int x1,y1,x2,y2;

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		System.out.println("按钮被点击了");
		 str =e.getActionCommand();
		if(str.equals(" ")){
			System.out.println("这是一个颜色按钮");
			JButton jbu =(JButton)e.getSource();//这个的意思是将获取的发生的事件源记录下来
			Color color = jbu.getBackground();
			g.setColor(color);//画笔获取了背景颜色
			
		}
		else {
			typestr =str;
		}
		
		
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		System.out.println("按钮被点击了");
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		x1 = e.getX();
		y1 =e.getY();
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		x2 =e.getX();
		y2 = e.getY();
		g.drawLine(x1, y1, x2, y2);
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		System.out.println("进入");
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		System.out.println("退出");
	}
	
}

前面是整个的程序

//首先创建一个窗体
//窗体需要设置大小啊之类的;居中;当窗体关闭的时候程序自行关闭结束;
//需要给窗体添加按钮之类的;注意窗体显示出来了才能添加按钮;画笔之类的东西
//当需求到达要添加按钮的时候就会想到添加到哪里的问题,所以就需要添加布局管理器
//当需要添加多个按钮的时候发现他们的步骤相似;所以用函数代替重复工作
//都需要添加文本;按钮自己创建;需要窗体;需要监听器
//需要给窗体装监听器;通过看原代码发现括号里面的内容需要一种接口数据类型;需要接口数据类型的时候需要重写一个类来作为数据
//需要一个数组来对与str所占位置进行填充
//当需要添加颜色按钮的时候发现;数组的内容发生了变化;因此创建一个函数重新添加全是颜色的按钮
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值