java事件处理
1.ActionEven事件
文本框,按钮,菜单项,密码框,单选按钮都可以出发ActionEvent事件
使用
addActionListener(ActionListener listen1)
来注册监视器
ActionListener本来是一个接口,我们必须写类(或者其他接口)来实现它的唯一方法
actionPerformed(ActionEvent e)
这里的e是事件源给该方法的一个参数,ActionEvent类有两个方法
public Object getSource();//返回事件源的上转型对象的引用
public String getActionCommand()//返回一个相关的“命令”字符串,比如这个ActionEvent是文本框,那就是返回他的文本内容
统计单词字数的一个代码
class Component extends JFrame{
JTextField test1;
JButton button1;
JTextArea testArea1;
JRadioButton radioButton1,radioButton2;
ButtonGroup group1;
Component(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
setLayout(new FlowLayout());
test1=new JTextField(8);
button1=new JButton("huang");
testArea1=new JTextArea(8,24);
add(test1);
add(button1);
add(new JScrollPane(testArea1));
AListener a=new AListener(test1,button1,testArea1);
test1.addActionListener(a);//需要import java.awt.event.ActionListener;
button1.addActionListener(a);
}
}
class AListener implements ActionListener{
JTextField test1;
JButton button1;
JTextArea testArea1;
AListener(JTextField test,JButton button,JTextArea testArea){
test1=test;
button1=button;
testArea1=testArea;
}
public void actionPerformed(ActionEvent e){
String a=test1.getText();
testArea1.append(a+"的长度"+a.length());
}
}

ItemEvent事件
选择框和下拉列表都可以触发ItemEvent事件
注册监视器
addItemListener(ItemListener listen1)
ItemListener接口也只有一个
对应事件触发的,可以用 combo1.getSelectedItem()获得事件的事件源
public void itemStateChanged(ItemEvent e)
简单计算器代码,(有个bug,下拉框要换了其他才能激活
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
public class test{ public static void main(String args[]){
Component window1=new Component();
window1.setBounds(40,40,300,200);
}
} class Component extends JFrame{
JTextField test1,test2;
JButton button1;
JTextArea testArea1;
JRadioButton radioButton1,radioButton2;
ButtonGroup group1;
JComboBox combo1;
Component(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
setLayout(new FlowLayout());
test1=new JTextField(4);
test2=new JTextField(4);
button1=new JButton("go");
testArea1=new JTextArea(5,20);
combo1=new JComboBox();
combo1.addItem("+");
combo1.addItem("-");
combo1.addItem("*");
combo1.addItem("/");
add(test1);
add(combo1);
add(test2);
add(button1);
add(new JScrollPane(testArea1));
Computer computer1=new Computer(test1,test2,testArea1);
Fuhao fuhao1=new Fuhao(computer1,combo1);
combo1.addItemListener(fuhao1);
button1.addActionListener(computer1);
}
}
class Fuhao implements ItemListener{
Computer computer1;
JComboBox combo1;
Fuhao(Computer a,JComboBox b){
computer1=a;
combo1=b;
}
public void itemStateChanged(ItemEvent e){
// System.out.println(combo1.getSelectedItem().toString());
computer1.getFuhao(combo1.getSelectedItem().toString());
}
}
class Computer implements ActionListener{
JTextField a,b;
JTextArea c;
String fuhao;
double result;
void getFuhao(String a){
fuhao=a;
}
Computer(JTextField a,JTextField b,JTextArea c){
this.a=a;
this.b=b;
this.c=c;
}
public void actionPerformed(ActionEvent e){
try{
// System.out.println(fuhao);
// System.out.println(a.getText());
// System.out.println(b.getText());
double a1=Double.parseDouble(a.getText());
double b1=Double.parseDouble(b.getText());
if(fuhao.equals("+")){
result=a1+b1;
}else if(fuhao.equals("-")){
result=a1-b1;
}else if(fuhao.equals("*")){
result=a1*b1;
}else if(fuhao.equals("/")){
result=a1/b1;
}
c.append(a1+" "+fuhao+" "+b1+"="+" "+result+"\n");
}
catch(Exception exp){
c.append("\n请输入数字\n");
}
}
}
java事件处理的更多相关文章
- 从零开始理解JAVA事件处理机制(1)
“事件”这个词已经被滥用了.正因为“事件”的被滥用,很多人在用到事件的时候不求甚解,依样画葫芦,导致学习工作了很多年,还是不清楚什么是事件处理器.什么是事件持有者.所以,如果你对于Event这个词还是 ...
- 从零开始理解JAVA事件处理机制(2)
第一节中的示例过于简单<从零开始理解JAVA事件处理机制(1)>,简单到让大家觉得这样的代码简直毫无用处.但是没办法,我们要继续写这毫无用处的代码,然后引出下一阶段真正有益的代码. 一:事 ...
- 从零开始理解JAVA事件处理机制(3)
我们连续写了两小节的教师-学生的例子,必然觉得无聊死了,这样的例子我们就是玩上100遍,还是不知道该怎么写真实的代码.那从本节开始,我们开始往真实代码上面去靠拢. 事件最容易理解的例子是鼠标事件:我们 ...
- java 事件处理
Java事件处理机制:EventObject类作为描述事件信息的事件信息类的基类,由EventListener接口派生新的接口或类来作为事件接收方的类,再定义事件源类. 事件信息类的构造方法必须含有事 ...
- java事件处理机制
java中的事件机制的参与者有3种角色: 1.event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在与listerne ...
- [转]Java事件处理机制- 事件监听器的四种实现方式
原文来自http://stefan321.iteye.com/blog/345221 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: ...
- Java事件处理机制(深入理解)
本文是关于Java事件处理机制的梳理,以及有重点的介绍一些注意点,至于基础的概念啥的不多赘述. 一.Java事件处理机制初步介绍(看图理解) 根据下图,结合生活实际,可以得知监护人可以有多个,坏人对小 ...
- Java事件处理机制- 事件监听器的四种实现方式
自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...
- java 事件处理机制:按下上下左右键控制小球的运动
/** * 加深对事件处理机制的理解 * 通过上下左右键来控制一个小球的位置 */package com.test3;import java.awt.*;import javax.swing.*;im ...
- java事件处理机制(自定义事件)
java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event sourc ...
随机推荐
- springmvc参数类型转换三种方式
SpringMVC绑定参数之类型转换有三种方式: 1. 实体类中加日期格式化注解 @DateTimeFormat(pattern="yyyy-MM-dd hh:MM&quo ...
- Detours简介 (拦截x86机器上的任意的win32 API函数)
Detours 当然是用detours,微软明显高腾讯一筹,同上,至今没失败过.写这种HOOK一定要再写个测试程序,不要直接HOOK你的目的程序,例如QQ,因为这样不方面更灵活的测试.说明一下:Det ...
- 使用MFC开发有十多年了,结合自身的体会,随便说几句(不能样样都依赖别人,C体系的人,绝对不怕人踢馆)
挺长时间了吧,这个帖子还没沉下去,使用MFC开发有十多年了,结合自身的体会,随便说几句:1.MFC是一个C++的基础类库,封装了绝大多数的API函数,主要是用来创建带UI的应用程序,服务端程序或着不带 ...
- Actor模型
Actors模型(Actor model)首先是由Carl Hewitt在1973定义, 由Erlang OTP (Open Telecom Platform) 推广,其 消息传递更加符合面向对象的原 ...
- Extjs4 自定义组件
Ext.onReady (function () { Ext.define ('MydesktopIcon', { /* Begin Definitions */ alias: 'widget.des ...
- Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值
Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值: Node.Values[wiNodeLevel.ItemIndex]://值 Node.Texts[ ...
- HDOJ(HDU) 2061 Treasure the new start, freshmen!(水题、)
Problem Description background: A new semester comes , and the HDU also meets its 50th birthday. No ...
- HDOJ的题目分类
模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 10 ...
- sql server 主从数据库同步 利用发布 订阅是实现
发布订阅功能自SQL 2005之后就有了 配置方法可参考:http://blog.csdn.net/wanmdb/article/details/7515277 遇到问题: 1. 如果代理无法启动 , ...
- HDU 4828 - Grids (Catalan数)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=4828 Catalan数的公式为 C[n+1] = C[n] * (4 * n + 2) / (n ...