1、外部类监听

package com.yfs.javase;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//外部类监听
public class FrameDemo1 extends Frame {
Button but1 = new Button(" + ");
Button but2 = new Button(" - ");
TextField text = new TextField(20);
public FrameDemo1() {
super("event1外部类");
setLocation(200, 150);
// 设置布局
setLayout(new FlowLayout());
text.setText("100");
text.setEditable(false);
//创建监听器对象
MyListener listener = new MyListener(this);
//建立关联 监听器添加到按钮
but1.addActionListener(listener);
but2.addActionListener(listener);
//text.getText();//取text值
add(but1);
add(text);
add(but2);
setResizable(false);
pack();
// 默认隐藏 设置显示
setVisible(true);
} public static void main(String[] args) {
new FrameDemo1();
} } //开发监听器 实现监听器接口
class MyListener implements ActionListener {
private FrameDemo1 frame;
//通过构造方法强制传入窗体对象
public MyListener(FrameDemo1 frame) {
this.frame = frame;
}
//ActionEvent 事件对象
@Override
public void actionPerformed(ActionEvent e) {
// System.out.println("按钮被单击了....");
// //事件对象
System.out.println(e.getActionCommand());//控件字符
// System.out.println(e.getSource());//事件源
//从text取值
//依赖传入对象
//FrameDemo1 frame = new FrameDemo1();//不能创建窗体对象
int val = Integer.parseInt(frame.text.getText());
System.out.println("val = " + val);
String opt = e.getActionCommand().trim();
if("+".equals(opt)){
frame.text.setText(String.valueOf(val + 1));
} else if("-".equals(opt)){
frame.text.setText(String.valueOf(val - 1));
} } }

2.内部类监听

package com.yfs.javase;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//内部类监听
public class FrameDemo2 extends Frame {
Button but1 = new Button(" + ");
Button but2 = new Button(" - ");
TextField text = new TextField(20);
public FrameDemo2() {
super("event1内部类");
setLocation(200, 150);
// 设置布局
setLayout(new FlowLayout());
text.setText("100");
text.setEditable(false);
//创建监听器对象
Listener listener = new Listener();
//建立关联 监听器添加到按钮
but1.addActionListener(listener);
but2.addActionListener(listener);
//text.getText();//取text值
add(but1);
add(text);
add(but2);
setResizable(false);
pack();
// 默认隐藏 设置显示
setVisible(true);
}
//内部类
class Listener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int val = Integer.parseInt(text.getText());
String opt = e.getActionCommand().trim();
System.out.println(opt);
if("+".equals(opt)){
text.setText(String.valueOf(val + 1));
} else if("-".equals(opt)){
text.setText(String.valueOf(val - 1));
}
} } public static void main(String[] args) {
new FrameDemo2();
} }

3.自监听

package com.yfs.javase;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//自监听
public class FrameDemo3 extends Frame implements ActionListener {
Button but1 = new Button(" + ");
Button but2 = new Button(" - ");
TextField text = new TextField(20);
public FrameDemo3() {
super("event1自监听类");
setLocation(200, 150);
// 设置布局
setLayout(new FlowLayout());
text.setText("100");
text.setEditable(false); //建立关联 监听器添加到按钮
but1.addActionListener(this);
but2.addActionListener(this);
//text.getText();//取text值
add(but1);
add(text);
add(but2);
setResizable(false);
pack();
// 默认隐藏 设置显示
setVisible(true);
} public static void main(String[] args) {
new FrameDemo3();
} @Override
public void actionPerformed(ActionEvent e) {
//事件处理代码
int val = Integer.parseInt(text.getText());
String opt = e.getActionCommand().trim();
if("+".equals(opt)){
text.setText(String.valueOf(val + 1));
} else if("-".equals(opt)){
text.setText(String.valueOf(val - 1));
}
} }

4.匿名类监听

package com.yfs.javase;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//匿名类监听
public class FrameDemo4 extends Frame {
Button but1 = new Button(" + ");
Button but2 = new Button(" - ");
TextField text = new TextField(20);
public FrameDemo4() {
super("event1匿名监听类");
setLocation(200, 150);
// 设置布局
setLayout(new FlowLayout());
text.setText("100");
text.setEditable(false); //建立关联 监听器添加到按钮
but1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
int val = Integer.parseInt(text.getText()) + 1;
text.setText(String.valueOf(val)); }
});
but2.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
int val = Integer.parseInt(text.getText()) - 1;
text.setText(String.valueOf(val)); }
});
//text.getText();//取text值
add(but1);
add(text);
add(but2);
setResizable(false);
pack();
// 默认隐藏 设置显示
setVisible(true);
} public static void main(String[] args) {
new FrameDemo4();
} }

5.背景图片

package com.yfs.javase;

import java.awt.FlowLayout;
import java.awt.Image; import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
//匿名类监听
public class FrameDemo5 extends JFrame { public FrameDemo5() {
super("event1匿名监听类");
setBounds(200, 150, 400, 400);
setLayout(new FlowLayout());
//标题图片
Image logo = new ImageIcon("img/m.gif").getImage();
setIconImage(logo);
//图片label
Icon ic = new ImageIcon("img\\index.gif");
JLabel jl = new JLabel(ic); JButton but = new JButton(new ImageIcon("img/1_03.gif"));
add(but);
add(jl);
setResizable(false);
//pack();
setVisible(true);
} public static void main(String[] args) {
new FrameDemo5();
} }

java新手笔记27 监听器类的更多相关文章

  1. JAVA自学笔记27

    JAVA自学笔记27 1.类的加载 1)当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. ①加载:就是指将class文件读入内存,并为之创 ...

  2. [Java] JSP笔记 - Listener 监听器

    Java Web 开发时,可以使用 Listener 来监听来监听一些事件,从而实现一些功能.实际上这个监听器,原理就是 Delphi 中大家常用的各种事件. 1. 那么,监听器的主要用途用哪些呢: ...

  3. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  4. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

  5. 1.9(java学习笔记)object类及toString()与equals()方法

    object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...

  6. Java学习笔记day06_自定义类_ArrayList

    1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...

  7. Java学习笔记(2)——有关类

    Java类的高级特性: {Java管理文件机制:类包. 同一个包中的类互相访问时,可以不指定包名. 同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可 ...

  8. java新手笔记31 集合实现类

    Person类: package com.yfs.javase; import java.util.Date; public class Person implements Comparable { ...

  9. java新手笔记18 类比较

    1.Shap类 package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 // ...

随机推荐

  1. 从零开始学android开发-布局中 layout_gravity、gravity、orientation、layout_weight

    线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity (是 ...

  2. 用C#调用Matlab图像处理自制QQ游戏2D桌球瞄准器

    平时不怎么玩游戏,有时消遣就玩玩QQ里的2D桌球,但是玩的次数少,不能像骨灰级玩家一样百发百中,肿么办呢?于是某天突发奇想,决定自己也来做个“外挂”.说是外挂,其实只是一个瞄准器,毕竟外挂是修改别人的 ...

  3. [AngularJS] $http cache

    By default your HTTP requests with the $https service in Angular are not cached. By setting some opt ...

  4. 图解JS原型链

    一:任何一个对象都有一个prototype的属性,在js中可以把它记为:__proto__ 当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表.. 在数据结构 ...

  5. php引入公用部分html出现了一行空白(原创)

    在导入公用部分html(客服信息)时,莫名其妙出现了一行空白,样式,html均无问题 后来才发现是html多了一行空白 <div class="ad-module-item3 fn-m ...

  6. Redis 字符串(String)

      Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 12 ...

  7. 利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备

    『Composer 一统天下的时代已经到来!』——白岩松 “一个时代结束了,另一个时代开始了.” Framework Interoperability Group(框架可互用性小组),简称 FIG,成 ...

  8. 杂乱无章之javascript(一)

    1.in 要求第一个(左边的)操作数必须是字符串类型或是可以转化成字符串类型的其他类型,而第二(右边的)操作数必须是数组或对象.只有第一个操作数的值是第二个操作数的属性名,才会返回true,否则返回f ...

  9. Maven 仓库

    Maven仓库分为本地仓库和远程仓库(中央仓库,私服,其他公共仓库)一张图就可以很清楚的看出结构 本地仓库:本地仓库是在我们当前电脑系统盘的user-administrator-m2-reposito ...

  10. ASP.NET MVC and jqGrid 学习笔记 5-添加数据

    据介绍,jqgrid有3种编辑数据的方式: Cell Editing 只允许修改某一个单元格内容 Inline Editing 允许在jqGrid中直接修改某一行的数据 Form Editing 弹出 ...