画笔、窗口监听、鼠标监听、键盘监听

2023-11-04

画笔

package com.tao.lesson03;

import java.awt.*;

public class TestPaint {
    public static void main(String[] args) {
        new MyPaint().loadFrame();
    }
}

class MyPaint extends Frame{
    public void loadFrame(){
        setBounds(200, 200, 600, 500);
        setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.pink);
        g.drawOval(200,200,100,100);
        g.fillOval(100,100,100,100); //实心圆

        //养成习惯,画笔画完,还原为最初的颜色

    }
}

窗口监听

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestWindow {
    public static void main(String[] args) {
        new WindowFrame();
    }
}

class WindowFrame extends Frame {
    public WindowFrame() {
        setBounds(100, 100, 100, 100);
        setBackground(Color.pink);
        setVisible(true);

        this.addWindowListener(
                //匿名内部类
                new WindowAdapter() {
                    @Override
                    public void windowClosing(WindowEvent e) {
                        //setVisible(false);//隐藏窗口
                        System.exit(0); //正常退出

                    }
                }
        );
    }

}

鼠标监听

目的:监听鼠标点击

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

public class TestMouseListener {
    public static void main(String[] args) {
        new MyFrame("画图");
    }
}

class MyFrame extends Frame {
    //画画需要画笔,需要监听鼠标当前位置,需要集合来存储这个点
    ArrayList points;

    public MyFrame(String title) {
        super(title);
        setBounds(200, 200, 400, 300);

        //存鼠标的点
        points = new ArrayList<>();
        //鼠标监听器,针对这个窗口
        this.addMouseListener(new MyMouseListener());

        setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
        //画画,监听鼠标的事件,迭代器
        Iterator iterator = points.iterator();
        while (iterator.hasNext()){
            Point point = (Point) iterator.next();
            g.setColor(Color.pink);
            g.fillOval(point.x,point.y,10,10);
        }
    }

    //添加一个点到界面上
    public void addPaint(Point point) {
        points.add(point);
    }

    //适配器模式
    private class MyMouseListener extends MouseAdapter {
        //鼠标按下,弹起,按住不放
        @Override
        public void mousePressed(MouseEvent e) {
            MyFrame frame=(MyFrame)e.getSource();
            //这个点就是鼠标的点
            frame.addPaint(new Point(e.getX(),e.getY()));

            //每次点击鼠标,都需要重画一次,刷新
            frame.repaint();
        }
    }
}

键盘监听

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class TestKeyListener {
    public static void main(String[] args) {
        new KeyFrame();
    }
}

class KeyFrame extends Frame{
    public KeyFrame(){

        setBounds(1, 1, 300, 400);
        setVisible(true);
        this.addKeyListener(new KeyAdapter() {

            //键盘按下出现一个事件
            @Override
            public void keyPressed(KeyEvent e) {
                //获得键盘按下的键是哪一个,当前的码
                int keyCode = e.getKeyCode();
                if (keyCode==KeyEvent.VK_UP)
                    System.out.println("按下了向上键");
                if (keyCode==KeyEvent.VK_LEFT)
                    System.out.println("按下了向左键");
                if (keyCode==KeyEvent.VK_DOWN)
                    System.out.println("按下了向下键");
                if (keyCode==KeyEvent.VK_RIGHT)
                    System.out.println("按下了向右键");
            }
        });
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

画笔、窗口监听、鼠标监听、键盘监听 的相关文章

随机推荐

  • MySQL根据不同条件联查不同表的数据if/case

    MySQL根据不同条件联查不同表的数据 项目开发中遇到类似的需求 Mybatis 中的 lt if gt 标签只能判断where部分 不能满足要求 在网上查解决方法 好像并没有可以完美解决问题的方案 if和case可以从某一种角度实现效果
  • Java HashSet介绍、使用方法详解及底层实现分析

    目录 1 HashSet介绍 2 使用方法 2 1 添加元素 2 2 判断元素是否存在 2 3 删除元素 2 4 计算集合元素个数 2 5 迭代HashSet 3 底层实现分析 1 HashSet介绍 HashSet 基于 HashMap
  • Xilinx FPGA平台GTX简易使用教程(汇总篇)

    GTX简易使用教程 先 知其然 慢慢再研究 所以然 目录 一 GTX必备基础知识 二 时钟篇 三 复位与初始化 四 GTX IP核配置介绍 五 GTX收发测试 六 后记 一 GTX必备基础知识 虽说搬砖只需要会用IP就行 但是为了把砖搬好
  • PCB过孔 VIA

    一 过孔基本概念与作用 1 过孔定义 从印制电路板的一个表层延展到另一个表层的导通孔 2 过孔作用 过孔可以起到电气连接 固定或定位器件的作用 二 过孔分类 通孔 Plated Through Hole 这种孔穿过整个线路板表面 可用于实现
  • nestjs:定义字典类型

    参考 initialization Declare and initialize a Dictionary in Typescript Stack Overflow 解决方法 下面的id可以改为任何命名 var persons id str
  • 系统上关闭是意外的_24V直流无刷电机电磁刹车系统介绍

    24V直流无刷电机型号BLDC57是在顾客规定状况下 这款一款直流无刷电机 48V 785W 3000转提升电磁刹车 实际主要参数见下表 这款电机选用绿色环保行业的天之骄子 钕磁铁硼钢 确保机器设备的优良特性 这款电机带24V直流无刷电机B
  • Idea打maven jar 抛出异常:A JNI error has occurred

    问题描述 当项目依赖其他jar包的时候 打出的jar包执行出错 抛出这个异常 报错信息 Error A JNI error has occurred please check your installation and try again
  • Android Studio 4.2 Gradle窗口找不到uploadArchives任务

    问题描述 Android Studio升级到4 2以后 新建了一个项目 配置好了uploadArchives任务想上传到Maven仓库 结果发现Gradle窗口找不到Tasks 解决方式 参考的原文链接 https stackoverflo
  • (软考高级)信息系统项目管理师过关经验

    初次接触软考是在大二期间 偶然了解到计算机软件水平考试 便在大二上学期一次性通过了软件设计师 结果本科阶段再也没有时间去考这些证书了 直到读研阶段 忙里抽闲赶紧复习 本不报希望 竟然通过了 总结原因无非是如下几条 已有知识储备 从容对待考试
  • springbootapplication注解包括哪些注解_@SpringBootApplication 注解 详解

    简单介绍一下 SpringBootApplication注解都有哪些注解组合而成 SpringBoot 一 SpringBootApplication是SpringBoot的一个核心注解 也是一个组合注解 二 SpringBootAppli
  • 疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04

    文章目录 1 问题描述 2 问题症结 3 解决办法 References 1 问题描述 打开蓝牙搜索设备无果 2 问题症结 终端下输入命令 dmesg grep i blue BCM Patch brcm BCM hcd not found
  • 遍历存储树节点

    import json def unit node dict dump dict 记录节点 dump val node val 遍历节点 for sub node in node sub nodes temp val 1 sub nodes
  • malloc 底层实现及原理

    原文 malloc 底层实现及原理 爱笑的张飞 博客园 文章目录 结论 具体内容 内存分配的原理 具体分配过程 情况一 malloc 小于 128K 的内存 使用 brk 分配 情况二 malloc 大于 128K 的内存 使用 mmap
  • 微赞 小程序 服务器 配置,微赞小程序平台

    微赞小程序平台 内容精选 换一换 锁与等待分析基于Linux perf工具的采样数据 对glibc和开源软件 如MySQL Open MP 的锁与等待函数 包括sleep usleep mutex cond spinlock rwlock
  • CentOS7 手动部署lnmp环境

    参考 CentOS7 手动部署lnmp环境 自我的进化 步骤一 准备编译环境 关闭防火墙 运行systemctl status firewalld命令 查看当前防火墙的状态 如果防火墙的状态参数是inactive 则防火墙为关闭状态 如果防
  • esp32找不到com端口_玩转GPIO之ESP32点灯大法(MicroPython版)

    在这篇文章 介绍了ESP32搭建Python开发环境的基本流程 myastrotong 玩转GPIO之ESP32搭建Python开发环境 zhuanlan zhihu com 搭建基本开发环境以后 就可以基于MicroPython进行硬件开
  • 【机器学习因果推理】

    机器学习因果推理 先验概率和后验概率 一 概率基础知识 二 先验概率和后验概率两者之间的关系 2 1 概念区别 2 2 举例区分 三 举例说明 总结 先验概率和后验概率 先验概率 指根据以往经验和分析得到的概率 由因求果 后验概率 指依据得
  • python如何关闭窗口仍能运行_Python在退出时关闭自己的CMD shell窗口

    让我们首先分析两个发布的Python脚本行在执行Python脚本时真正做了些什么 感谢eryksun进行深入调查 真正使用Python导致正确的描述 现在可以在下面阅读 os system 导致在前台使用控制台窗口执行cmd exe C并停
  • 夯实C++基础之刷题:链表——2链表反转

    题目 题解 1 双指针 每一次都局部翻转 class Solution public ListNode reverseList ListNode head ListNode cur NULL pre head while pre NULL
  • 画笔、窗口监听、鼠标监听、键盘监听

    画笔 package com tao lesson03 import java awt public class TestPaint public static void main String args new MyPaint loadF