Java画图板v2.0

目标一:

        掌握数组的创建 与 循环遍历 给窗体加上图形选择按钮 增加实现动作监听器 实现选择图形功能
        ·实现步骤:
        ·1: 设窗体的布局为流式布局 FlowLayout
        ·2: 创建多个按钮对象 并加到窗体上
        ·3: 给监听器增加动作监听器ActionListener
        ·4: 实现动作监听的actionPerformed方法
        ·5: 在方法中获取按钮的文本 赋值给 type 全局变量
        ·6: 在鼠标松开的方法中 使用type判断 用来绘制什么图形
        ·7: 给按钮加上动作监听器 与鼠标监听器是同一个对象

        ·数据结构:用于存储数据的结构,结构是多变的,线性,链式 网状的 树状的
        ·格式:
                ·数据类型[] 数组变量名={元素1,元素2,元素3,元素4,元素5};
                        ·PS: int[] arr = {0,5,6,7,1,2,2,9,1,0};
                        ·String[] arr1 ={"hello","world"};
                ·数组有个特定的属性叫做下标:
                        ·下标固定: 从0计数,每个元素+1
                ·通过下标获取元素: 数据变量 = 数组名[i]
                        ·int n = arr[7];
                        ·替换: 数组名[i]=值;
                        ·arr[5]=10;
// 创建一个文本数组
 String[] btnStrs = {"直线","矩形","圆形","实心矩形","实心圆形","正圆",
 "等腰三角形","三角形","多边形","撤回","清屏"};
 for (int i = 0; i < btnStrs.length; i++) {
 JButton btn = new JButton(btnStrs[i]);
 jf.add(btn);
 btn.addActionListener(dl);
 }

目标二:

        给窗体加上图形选择按钮 增加实现动作监听器 实现选择图形功能 实现颜色按钮功能
界面代码:
package comsum.drawpad.yzy0707;
import javax.swing.*;
import java.awt.*;
public class DrawPad {
 public void showUI() {
 JFrame jf = new JFrame();
 jf.setTitle("画图板V1");
 jf.setSize(800, 800);
 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 jf.setLocationRelativeTo(null);
 // 设置布局
 FlowLayout flow = new FlowLayout();
 jf.setLayout(flow);
// JButton btn1 = new JButton("直线");
// JButton btn2 = new JButton("矩形");
// jf.add(btn1);
// jf.add(btn2);
 // 创建一个监听对象
 DrawListener dl = new DrawListener();
 // 创建一个文本数组
 String[] btnStrs = {"直线", "矩形", "圆形", "实心矩形", "实心圆形", "正圆",
 "等腰三角形", "三角形", "多边形", "撤回", "清屏"};
 for (int i = 0; i < btnStrs.length; i++) {
 JButton btn = new JButton(btnStrs[i]);
 jf.add(btn);
 btn.addActionListener(dl);
 }
 // 创建一个颜色数组
 Color[] colorArr = {Color.BLACK, Color.WHITE, Color.GRAY, Color.LIGHT_GRAY, 
Color.DARK_GRAY,
 Color.RED, Color.GREEN, Color.BLUE, Color.CYAN, Color.YELLOW, 
Color.ORANGE, Color.PINK
 };
 String[] colorStrs=
{"BLACK","WHITE","GRAY","L_GRAY","D_GRAY","RED","GREEN","BLUE","CYAN","YELLOW","ORANGE
","PINK"};
 for (int i = 0; i < colorArr.length; i++) {
 JButton btn = new JButton(colorStrs[i]);
 btn.setBackground(colorArr[i]);
 jf.add(btn);
 btn.addActionListener(dl);
 }
 jf.setVisible(true);
 // 获取Graphics - 画笔
 Graphics g = jf.getGraphics();
comsum.drawpad.zyf0707
javax.swing.
java.awt. jf.addMouseListener(dl);
// btn1.addActionListener(dl);
// btn2.addActionListener(dl);
 dl.g = g;// 传引用地址
 }
 public static void main(String[] args) {
 DrawPad drawPad = new DrawPad();
 drawPad.showUI();
 }
}
监听器代码:
package comsum.drawpad.yzy0707;
import java.awt.*;
import java.awt.event.ActionEvent;
import javaawt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
//String[] colorStrs=
{"BLACK","WHITE","GRAY","L_GRAY","D_GRAY","RED","GREEN","BLUE","CYAN","YELLOW","ORANGE
","PINK"};
public class DrawListener implements MouseListener, ActionListener {
 Graphics g;
 int x1, y1, x2, y2;
 String type = "";
 @Override
 public void actionPerformed(ActionEvent e) {
 // 按钮的文本
 String ac = e.getActionCommand();
 System.out.println(ac);
// if(ac.equals("BLACK")){
// g.setColor(Color.BLACK);
// }
 switch (ac) {// 括号中是需要比较的 后面的case是选项
 case "BLACK":
 g.setColor(Color.BLACK);
 break;
 case "WHITE":
 g.setColor(Color.WHITE);
 break;
 case "GRAY":
 g.setColor(Color.GRAY);
 break;
 default:// 默认的 上面都没有匹配到
 type = ac;// 每次点击按钮都将 ac 赋值给type
 }
 }
 public void mouseClicked(MouseEvent e) {
 System.out.println("点击");
 int x = e.getX();
 int y = e.getY();
 System.out.println("x: " + x + " y: " + y);
 }
 public void mousePressed(MouseEvent e) {
 System.out.println("按下");
comsum.drawpad.zyf0707
java.awt.
java.awt.event.
java.awt.event.
java.awt.event.
java.awt.event. int x = e.getX();
 int y = e.getY();
 System.out.println("x: " + x + " y: " + y);
 x1 = x;
 y1 = y;//赋值给全局变量,可以在整个类中都使用
 }
 public void mouseReleased(MouseEvent e) {
 System.out.println("松开");
 int x = e.getX();
 int y = e.getY();
 System.out.println("x: " + x + " y: " + y);
 x2 = x;
 y2 = y;
 if (type.equals("直线")) {
 // 绘制直线
 g.drawLine(x1, y1, x2, y2);
 } else if (type.equals("矩形")) {
 // 矩形 左上角的坐标 宽度 高度
 g.drawRect(min(x1, x2), min(y1, y2), abs(x2 - x1), abs(y2 - y1));
 } else if (type.equals("实心矩形")) {
 g.fillRect(min(x1, x2), min(y1, y2), abs(x2 - x1), abs(y2 - y1));
 } else if (type.equals("实心圆形")) {
 g.fillOval(min(x1, x2), min(y1, y2), abs(x2 - x1), abs(y2 - y1));
 } else if (type.equals("圆形")) {
 g.drawOval(min(x1, x2), min(y1, y2), abs(x2 - x1), abs(y2 - y1));
 } else if (type.equals("等腰三角形")) {
 }
 // 利用直线 和 两个点
 // 矩形
 // 等腰三角形
 // 多边形
 // 自带的绘制方法
// // 外切矩形 左上角的坐标 宽度 高度
// g.drawOval(min(x1, x2), min(y1, y2), abs(x2 - x1), abs(y2 - y1));
// g.setColor(Color.BLUE);
// g.fillRect(min(x1, x2), min(y1, y2), abs(x2 - x1) / 2, abs(y2 - y1) / 2);
// g.setColor(Color.orange);
// g.fillOval(min(x1, x2), min(y1, y2), abs(x2 - x1) / 2, abs(y2 - y1) / 2);
 }
 public void mouseEntered(MouseEvent e) {
 System.out.println("进入");
 }
 public void mouseExited(MouseEvent e) {
 System.out.println("离开"); }
 // 自己定义计算方法
 public int abs(int n) {
 return n < 0 ? -n : n;
 }
 public int min(int a, int b) {
 return a < b ? a : b;
 }
}

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值