GUI常用监听事件
概念
对鼠标、键盘等一系列事件做出相应的反馈
- 事件监听
//创建监听事件
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常用监听事件的更多相关文章
- [置顶] java Gui 键盘监听事件
简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...
- jquery实现拖拽以及jquery监听事件的写法
很久之前写了一个jquery3D楼盘在线选择,这么一个插件,插件很简单,因为后期项目中没有实际用到,因此,有些地方不是很完善,后面也懒得再进行修改维护了.最近放到github上面,但是也少有人问津及s ...
- jquery中,使用append增加元素时,该元素的绑定监听事件失效
举例:如果在一个<div id="resultArea"></div>中,通过append添加一个id="checkOutTip"的文本 ...
- jquery中,使用append增加新元素时,新增元素的绑定监听事件失效的解决办法
$("outerSelector").on("eventType","innerSelector",function(){}); 举例:如果 ...
- Android开发 ---基本UI组件8:九宫格布局、setOnItemClickListener()项被选中监听事件
效果图: 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> ...
- jquery监听事件on写法以及简单的拖拽效果
引子——关于jquery的某些写法 我先不对监听事件做解释,我们先来看下jquery的一些写法吧!我们最常用的是jquery的css()方法,相信大家都会用! 假如用css设置一个属性,我们写法如下: ...
- Android中Button的五种监听事件
简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...
- Second Day: 关于Button监听事件的三种方法(匿名类、外部类、继承接口)
第一种:通过匿名类实现对Button事件的监听 首先在XML文件中拖入一个Button按钮,并设好ID,其次在主文件.java中进行控件初始化(Private声明),随后通过SetOnClickLis ...
- js 获取当前焦点所在的元素、给元素和input控件添加键盘监听事件、添加页面级的键盘监听事件
页面级的键盘监听事件 document.onkeydown = function (event) { var e = event || window.event || arguments.callee ...
随机推荐
- 【Azure API 管理】在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received."
API 管理 (APIM) 是一种为现有后端服务创建一致且现代化的 API 网关的方法. 问题描述 在设置了APIM客户端证书,用户保护后端API,让请求更安全. 但是,最近发现使用客户端证书的API ...
- argparse模块基本用法
argparse模块基本用法 在 python 编写的程序中,我们经常会看到的 argparse 相关代码,而它究竟怎么使用呢?接招! argparse 是一个命令行参数解析模块 现在提出需求,我需要 ...
- 【阿菜用工具】利用 Web3.js 在 ganache 上部署以及调用智能合约
合约部署 要部署的合约 pragma solidity ^0.4.23; contract test { uint256 value; function setValue(uint256 _value ...
- raven靶机
仅供个人娱乐 靶机信息 Raven 下载地址:https://www.vulnhub.com/entry/raven-1,256/ 一.主机探测 端口信息 目录扫描 80端口 根据页面开始搜寻有用的信 ...
- VS Code的插件安装位置改变
VS Code的相关配置 VS Code的插件安装位置改变 可以通过创建连接,将默认的extensions位置,改变到D盘 Windows 链接彻底解决 vscode插件安装位置问题 mklink / ...
- 创建函数function
1.创建普通函数 function 函数名称(){ 函数体://封装的代码 } 函数名称()://调用函数 function getSum(){ for(var i=1,sum=0;i<=100 ...
- Mybatis学习笔记-动态SQL
概念 根据不同环境生成不同SQL语句,摆脱SQL语句拼接的烦恼[doge] 本质:SQL语句的拼接 环境搭建 搭建数据库 CREATE TABLE `blog`( `id` VARCHAR(50) N ...
- IIS短文件名漏洞原理与挖掘思路
首先来几个网址先了解一下 https://www.jb51.net/article/166405.htm https://www.freebuf.com/articles/web/172561.htm ...
- onethink-i春秋
记一道onethink漏洞拿flag的题. 因为用户名长度被限制了,注册两个账号分别为 %0a$a=$_GET[a];// %0aecho `$a`;// #(%0a是换行符的urlencode) 点 ...
- 那些 22 岁毕业做Android开发的人,他们 50 岁左右时的人生轨迹是怎样的?
本人今年35了,已经干了14年程序员,是14年不是13年,因为我是专科毕业. 一直就是普普通通的程序员,特别纯的码农,从没做过管理岗位,并且很可能以后也是如此. 现在已经上有老下有小. 曾经在某著名互 ...