控制台程序. 定义事件监听器的类必须实现监听器接口.所有的事件监听器接口都扩展了java.util.EventListener接口.这个接口没有声明任何方法,仅仅用于表示监听器对象.使用EventListener类型的变量可以保存任意事件监听器对象的引用. 要为特定的事件类型实现监听器,只需要实现对应接口中的方法即可.让应用程序类成为窗口事件的监听器,就可以处理SketcherFrame窗口的一些窗口事件.接下来必须创建Sketcher对象,作为事件的监听器. // Main window fo…
控制台程序. 适配器类是指实现了监听器接口的类,但监听器接口中的方法没有内容,所以它们什么也不做.背后的思想是:允许从提供的适配器类派生自己的监听器类,之后再实现那些自己感兴趣的类.其他的空方法会从适配器类中继承,所以无须担心它们. 修改上一文中的Sketcher类如下: // Sketching application import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Sketcher…
控制台程序. 动作Action是任何实现了javax.swing.Action接口的类的对象.这个接口声明了操作Action对象的方法,例如,存储与动作相关的属性.启用和禁用动作.Action接口扩展了ActionListener接口,所以Action对象既是监听器,也是动作. 一些Swing组件,包括JMenu和JToolBar类型的组件,都有add()方法,可以接受Action类型的参数.当使用add()方法把Action对象添加到JMenu对象中,add()方法就会创建类型自动正确的组件.…
控制台程序. 要为菜单项添加图标以补充工具栏图标,只需要在创建菜单项的Action对象中添加IconImage对象,作为SMALL_ICON键的值即可. // Defines application wide constants package Constants; import java.awt.Color; import javax.swing.*; public class SketcherConstants { // Path for images public final static…
控制台程序. 为表示事件的常量使用标识符可以直接启用组件对象的特定事件组.调用组件的enableEvent()方法,并把想要启用事件的标识符传送为参数,但这只在不使用监视器的情况下有效.注册监听器会自动启用监听器想要监听的事件,所以不需要调用enableEvent()方法.只有当希望对象能处理自己的某些事件时,才调用enableEvent()方法,但使用监听器可以达到相同的效果. 使用监听器对象是处理事件的首选方式,因为更容易直接启用对象的事件,代码也更简洁. // Main window fo…
控制台程序. 为了标识元素的类型,可以为菜单已提供的4中元素定义常量,用作ID.这有助于执行菜单项监听器的操作,还提供了一种标识颜色类型的方式.我们会累积许多应用程序范围的常量,所以把它们定义为可以静态导入的类中的静态域会比较方便.为了导入静态域,类必须在指定的包中,所以先建立包. 为了把类放在Constants包中,需要在硬盘的合适位置建立以Constants命名的目录,然后在编译Constants包中的类时,使用-classpath选项标识Constants目录的路径. // Defines…
控制台程序. 语义事件与程序GUI上的组件操作有关.例如,如果选择菜单项或单击按钮,就会生成语义事件. 对组件执行操作时,例如选择菜单项或单击按钮,就会生成ActionEvent事件.在选择或取消选择某个组件时,会生成ItemEvent事件.在调整可调整的对象(如滚动条)时,就生成AdjustmentEvent事件. 上面的每一种语义事件类型都定义了相应的监听器接口,这些接口都只声明了一个方法: 1.ActionListener定义了actionPerformed(ActionEvent e)方…
控制台程序. 定义监听器类有许多方式.下面把监听器类定义为单独的类MouseHandler: // Mouse event handler for a selection button import java.awt.Cursor; import java.awt.event.*; public class MouseHandler extends MouseAdapter { Cursor handCursor = new Cursor(Cursor.HAND_CURSOR); Cursor…
Java实现对组件事件(如单击.输入等)的监听和JavaScript类似,都是先添加Listener,再写触发函数,不同的是,Java实现监听前必须使用implements将各个接口添加到类内. 相关的库为java.awt.event.* 例如要添加行为事件的接口ActionListener,则需要在实现窗口的类内作如下操作: public class Test extends JFrame implements ActionListener{     public Test(){       …
一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request)和服务器返回给浏览器的内容(Response).一言以蔽之:过滤器是用来筛选请求的. * 怎么实现一个过滤器? 思路如下: 1) 编写一个类, 实现javax.servlet.Filter 接口 -- destory(); -- init(FilterConfig config); -- doFil…