天天看点

《Java数字图像处理:编程技巧与应用实践》——3.4 基本JButton事件响应

本节书摘来自华章计算机《java数字图像处理:编程技巧与应用实践》一书中的第3章,第3.4节,作者 贾志刚,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

在学习jbutton事件响应的知识之前,首先来看一下swing中如何实现对用户事件的监听与处理,认识一下swing中事件响应最重要的线程—事件分派线程。

在swing中有一个特殊的线程被称为swing事件分配线程,如果对ui组件的操作不在swing事件分派线程中,swing将抛出异常。检测当前线程是否为事件分派线程可以通过swing本身提供的一个简单方法swingutilities.iseventdispatchthread()来完成。对swing ui组件的刷新、重绘等必须都在事件分派线程中完成,这是因为swing组件本身的设计不是线程安全的,所以通过一个特殊的线程—事件分派线程来实现对所有组件的更新与重绘,这样就保证了swing组件操作的线程安全性。

jbutton组件是java swing中实现用户交互最常用的组件,当用户单击对应的jbutton组件时,swing通过监听组件添加actionlistener对象实例,来实现对jbutton组件单击事件的监听与响应处理,其响应处理则通过实现actionlistener接口的actionperformed()方法来完成。很多时候,在单击jbutton按钮以后,虽然有很多事情要做,但还是希望ui可以继续响应用户操作,这时可使用swingwork来完成用户的操作并刷新ui显示。

在对swing事件响应机制有初步了解以后,下面看一下在正式的项目编程中swing如何实现对jbutton事件监听与响应。其实现过程大致可以分为两步完成。

1)实现actionlistener接口,最常见的是由定义jbutton组件的类来实现actionlistener接口。

2)根据actionevent.getactioncommand()得到的文本常量响应相应的用户操作。