java 多线程 事件_Java—事件和多线程机制

本文详细介绍了Java中的事件处理机制,包括事件源、事件监听者、事件处理流程,以及ActionListener、ActionEvent、TextListener、ItemListener、AdjustmentListener、MouseListener和KeyListener接口的使用。此外,还讲解了Java的多线程概念,包括线程的生命周期、线程类和Runnable接口的使用,展示了如何创建和控制线程。
摘要由CSDN通过智能技术生成

一  事件

1.1 事件源

图形用户界面上每个可能产生事件的组件称为事件源。

1.2 事件监听者

Java系统中注册的用于接收特殊事件的类。不同的事件对应着不同的监听者,要想事件被监听者监听并处理,则需先将事件源注册到监听者。

1.3 事件处理流程

事件源触发事件并将事件作为一个参数传递给监听者,监听者实现某个接口中的抽象方法,从而实现对事件的处理。Java的事件处理机制是一个委托事件模型。

事件源注册的方法如下:

public void addActionListener(ActionListener l)

添加特定的动作,监听接收来自事件源的动作事件,如果l为空,不会产生任何动作。

监听者实现的接口为ActionListener接口,接口ActionListener来自包java.awt.event。

在此接口中只有一个方法:

public void actionPerformed(ActionEvent e)

当事件对象e发生时,调用此方法。监听者就需要实现这个方法。

1.4 动作事件

ActionEvent包含一个事件,该事件为执行动作事件ACTION_PERFORMED。触发这个事件的动作为:

(1) 点击按钮。

(2) 双击列表中的选项。

(3) 选择菜单项。

(4) 在文本框中输入回车。

常用方法如下:

public String getActionCommand()                            返回引发某个事件的命令按钮的名字,如果名字为空,那么返回标签值。

public void setActionCommand(String command)        设置引发事件的按钮的名字,默认设置为按钮的标签。

例:测试动作事件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagetest;2

3 import java.awt.*;4 import java.awt.event.*;5 import java.applet.*;6 public class UseButton extends Applet implementsActionListener{7 /**

8 *9 */

10 private static final long serialVersionUID = 1L;11

12 String str = newString();13 Button b1; //声明按钮对象;

14 Button b2;15 Color c;16 public voidinit()17 {18 b1 = new Button("按钮对象1");19 b2 = new Button("按钮对象2");20 //添加事件监听者

21 b1.addActionListener(this);22 b1.setBackground(Color.yellow);23 b2.addActionListener(this);24 this.add(b1);25 this.add(b2);26

27 }28 public voidstart()29 {30 str =b1.getLabel();31 //repaint();

32 }33 public voidpaint(Graphics g)34 {35 g.setColor(c);36 g.drawString("引发事件的对象的标签:" + str, 80,60);37 }38 //实现接口中的方法,响应动作事件

39 public voidactionPerformed(ActionEvent e)40 {41 String arg =e.getActionCommand();42 if(arg == "按钮对象1")43 {44 c =Color.red;45 str = "按钮对象1";46 }47 else if(arg == "按钮对象2")48 {49 c =Color.green;50 str = "按钮对象2";51 }52 repaint();53 }54 }

View Code

点击按钮对象1 ,点击按钮对象2

输出结果:

480e304860c260d02bffcb0f556a0b80.png     

c4c4bebbd6a1e66c0cf419c038923239.png

1.5 文本事件(TextEvent)

文本事件即代表文本区域中文本变化的事件TEXT_VALUE_CHANGED,在文本区域中改变文本内容。

public void addTextListener(TextListener l)                     添加特定的文本事件,监听者接收来自文本对象的文本事件。如果l为空,那么不会抛出任何异常,而且也不会完成任何动作。

public interface TextListener extends EventListener         用于接收文本事件的监听者接口。当对象的文本发生变化时,调用监听者对象的方法。

接口中的方法为:

public void textValueChanged(TextEvent e)                    当文本发生改变时调用。

public Object getSource()                                             发生事件的对象,从EventObject继承来的方法。

例:测试文本事件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagetest;2

3 import java.awt.*;4 import java.awt.event.*;5 importjava.applet.Applet;6 public class UseTextEvent extends Applet implementsActionListener, TextListener{7 /**

8 * @ YMM 2016/05/099 */

10 private static final long serialVersio

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值