概念

对鼠标、键盘等一系列事件做出相应的反馈

  • 事件监听
//创建监听事件
public class Demo {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
Button button = new Button("start"); //添加监听器
//根据参数我们可以知道需要添加一个监听器类,所以需要什么,我们就new什么
MyListener myListener = new MyListener();
button.addActionListener(myListener); frame.add(button);
windowClose(frame);
frame.pack();//自动控制大小
frame.setVisible(true); } //实现关闭窗口监听
private static void windowClose(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
} static class MyListener implements ActionListener { @Override
public void actionPerformed(ActionEvent actionEvent) {
System.out.println("产生事件响应...");
}
}
}
  • 多事件监听
public class Demo01 {
public static void main(String[] args) {
Frame frame = new Frame();
Button btn1 = new Button("btn1");
Button btn2 = new Button("btn2"); //设置监听
MyListener myListener = new MyListener();
btn1.setActionCommand("btn1");
btn2.setActionCommand("btn2");
btn1.addActionListener(myListener);
btn2.addActionListener(myListener); frame.setLayout(new GridLayout(1,2));
frame.add(btn1);
frame.add(btn2);
frame.pack();
frame.setVisible(true);
} //实现共同监听事件
static class MyListener implements ActionListener{ @Override
public void actionPerformed(ActionEvent actionEvent) {
System.out.println(actionEvent.getActionCommand()+"发出响应。");
//通过监听事件返回值,判断
if (actionEvent.getActionCommand().equals("btn1")){
System.out.println("start");
}
}
}
}

常用监听:

一、文本监听 textField()

public class TextListener {
public static void main(String[] args) {
TextFrame textFrame = new TextFrame("文本测试窗口"); //新建文本框
TextField textField = new TextField(); textFrame.add(textField,BorderLayout.CENTER);
textFrame.setVisible(true);
} } //将窗口类封装
class TextFrame extends Frame{
public TextFrame(String title){
super(title);
this.setBounds(200,200,500,400);
}
}

二、鼠标监听

public class MouseListener {
public static void main(String[] args) {
mouseFrame frame = new mouseFrame("鼠标监听测试窗口"); //添加鼠标监听
frame.addMouseListener(new myMouse()); frame.setVisible(true);
}
} //适配器模式
class myMouse extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent mouseEvent) {
System.out.println("点击");
//获取鼠标位置
System.out.println("鼠标位置为("+mouseEvent.getX()+","+mouseEvent.getY()+")");
}
} class mouseFrame extends Frame{
public mouseFrame(String title){
super(title);
this.setBounds(200,200,500,400);
}
}

三、窗口监听

//实现窗口监听
class windowClose extends WindowAdapter{
@Override
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
}

补充:适配器模式的作用,个人理解为避免实现不必要的接口方法,即只想实现接口的其中几个方法,采用一个实现所有接口的类(适配器),通过继承这个适配器来实现(重载)某个方法。

GUI常用监听事件的更多相关文章

  1. [置顶] java Gui 键盘监听事件

    简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...

  2. jquery实现拖拽以及jquery监听事件的写法

    很久之前写了一个jquery3D楼盘在线选择,这么一个插件,插件很简单,因为后期项目中没有实际用到,因此,有些地方不是很完善,后面也懒得再进行修改维护了.最近放到github上面,但是也少有人问津及s ...

  3. jquery中,使用append增加元素时,该元素的绑定监听事件失效

    举例:如果在一个<div id="resultArea"></div>中,通过append添加一个id="checkOutTip"的文本 ...

  4. jquery中,使用append增加新元素时,新增元素的绑定监听事件失效的解决办法

    $("outerSelector").on("eventType","innerSelector",function(){}); 举例:如果 ...

  5. Android开发 ---基本UI组件8:九宫格布局、setOnItemClickListener()项被选中监听事件

    效果图: 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> ...

  6. jquery监听事件on写法以及简单的拖拽效果

    引子——关于jquery的某些写法 我先不对监听事件做解释,我们先来看下jquery的一些写法吧!我们最常用的是jquery的css()方法,相信大家都会用! 假如用css设置一个属性,我们写法如下: ...

  7. Android中Button的五种监听事件

    简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...

  8. Second Day: 关于Button监听事件的三种方法(匿名类、外部类、继承接口)

    第一种:通过匿名类实现对Button事件的监听 首先在XML文件中拖入一个Button按钮,并设好ID,其次在主文件.java中进行控件初始化(Private声明),随后通过SetOnClickLis ...

  9. js 获取当前焦点所在的元素、给元素和input控件添加键盘监听事件、添加页面级的键盘监听事件

    页面级的键盘监听事件 document.onkeydown = function (event) { var e = event || window.event || arguments.callee ...

随机推荐

  1. k8s系列文章第五篇(docker-compose)

    更多精彩内容,猛搓这里 目录 一.Docker Compose 1.前言 2.官方介绍 1.Compose 中有两个重要的概念 2.三步骤 3.Compose是Docker官方的开源项目,需要安装! ...

  2. (Opencv02)图片展示

    (Opencv02)图片展示 在程序里我们怎么把图片显示出来呢? 这里需要记一个自定义函数就好啦!  def cv_show(name, img):     cv2.imshow(name, img) ...

  3. 一键设置WPS_Office_2019专业版的定时自动备份的批处理文件

    一键设置WPS_Office_2019专业版的定时自动备份的批处理文件 rem ================================================ rem 一键设置WPS ...

  4. SVG和Canvas的区别?

    什么是SVG? SVG(可缩放矢量图形)编辑可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 什么是 Canvas ...

  5. Quartz部署Linux的一个坑

    前言 最近做了一个项目,使用Quartz做定时任务,然后部署到了Linux服务器上,但是竟然很惊奇的跑不起来,已经在阿里云上的Linux上验证无数次了,后来经过不懈努力,终于发现了问题,我自己的Lin ...

  6. 百度地图API开发的快速使用和大量坐标点操作【点聚合,海量点,mapv】

    快速上手 注意:本篇文章代码是基于 百度地图 JavaScript API v3.0 的条件下编写,GL版本可能稍有变化. 地图嘛,很重要的一部分就是坐标经纬度了: 经度: 英文 longitude ...

  7. Spring Cloud 专题之七:Sleuth 服务跟踪

    书接上回: SpringCloud专题之一:Eureka Spring Cloud专题之二:OpenFeign Spring Cloud专题之三:Hystrix Spring Cloud 专题之四:Z ...

  8. linux copy_id

    ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh ...

  9. 操作系统思考 第十一章 C语言中的信号量

    第十一章 C语言中的信号量 作者:Allen B. Downey 原文:Chapter 11 Semaphores in C 译者:飞龙 协议:CC BY-NC-SA 4.0 信号量是学习同步的一个好 ...

  10. Python语言系列-10-数据库

    MySQL 基础环境准备 readme.txt 作者:Alnk(李成果) 版本:v1.0 安装mysql数据库 略 创建student库 # mysql> create database stu ...