Java — Action接口的使用

一 、 我们常常会遇到这样一个问题:很多组件都需要处理相同的事件 ; 比如,通常一个软件在设计时会因用户习惯,

产生不同的操作方式却能达到相同的功能,例如文书编辑器中,copy功能可能在菜单中出现,

也可能在工具栏上出现,甚至在快显菜单(Popup Menu)中出现,虽然出现的方式不一样,

但均能达到copy的功能.若以我们之前的事件处理方法,我们必须为每种出现方式实现copy功能,

造成程序代码重复性太高,不易阅读也不美观。现在我们就有这样一个处理方法——使用Action接口

二、Action从表面的意思上就是“动作、行为” , 也就说一个实现Action接口的对象,本身就是一种业务,就是一种

处理功能,我们可以使用这个业务对象来创建不同的组件(如普通按钮、菜单项、工具栏按钮等),这样的话这些组件

就都有相同的功能了

三、下面就来详细的介绍Action接口的用法

1、Action接口是ActionListener接口的子接口,它除了包含ActionListener接口的actionPerformed()方法之外,

还含有name和icon两个属性,其中name用于指定创建的按钮或者菜单项的文本标签,icon则用于指定按钮的图标或者

菜单项中的图标。也就是说,Action接口将“事件监听”和“可被转换成按钮和菜单项”集于一身,这恰好说明了上面所说的

功能

2、实际上在JButton的构造方法 public JButton(Action action )中、JToolBar的add(Action action) 、以及JMenu的

add(Action action )方法中都可以看出,他们都能够使用Action对象为参数,将Action自动的转化为按钮或者菜单项,你要做的

仅仅是定义一个Action对象,之后仅仅需要调用上面的方法就能够自动的将Action转化成组件了

3、就像上面说的那样,Action本身并不是组件,只有应用JButton的构造方法或者将Action添加到指定的组件容器中(JToolBar或者JMenu)

才能够将值转化成组件

4、总结上面的各项我们可以得出,接收Action的容器(或者JButton)需要完成以下几项工作:

①使用add方法添加Action对象

②根据Action对象中的name和icon属性,自动的创建按钮或者菜单项

③通过Action对象为应用组件注册事件监听器,系统会为该Action所创建的所有的组件注册同一个事件监听器

(事件处理器就是Action对象里的actionPerformed()方法)

④在Action接口中还有一个setEnabled(boolean)方法,这个方法用来指定当前的Action动作是否被激活,

只有一个Action动作被激活后,相应的组件才能够使用③中的监听器来处理业务,这是为什么呢?比如:我们创建了

“复制”“粘贴”两项Action业务的话,那么只有当复制完成后,“粘贴”业务才可以被激活,否则“粘贴”业务默认

应该是不被激活的

      好了,基本的逻辑搞清楚之后,那么下面就是如何创建一个Action对象了,一般我们并不是直接通过创建一个

实现Action接口的类,之后在通过这个类来创建Action类型的对象,而是创建一个实现AbstractAction抽象类的类;

这个抽象类AbstractAction实现了Action接口,而且这个抽象类,除了actionPerformed()方法之外,

已经将Action中包括setEnabled(boolean)在内的所有方法都实现了,这样一来我们就能够直接使用setEnabled()

等游泳的方法了;好了这样一来AbstractAction抽象类中只有actionPerformed()方法没有实现,这个方法应该在

创建的那个实现了AbstractAction类的类中实现;所以创建一个Action对象的过程如下:

①创建一个类(设为b类),让这个类继承AbstractAction抽象类

②创建b类的构造方法,为AbstractAction中的name和icon属性赋值

(AbstractAction抽象类中有构造方法 public AbstractAction(String name,Icon icon)

③在b类中实现actionPerformed()方法,在些业务处理时,要注意是要将某些其他的业务激活或者关闭

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaAction接口类是一个在Java Web开发中常用的接口,用于处理Web请求并返回结果。它通常被用于实现控制器中的方法,以处理来自用户的HTTP请求,然后返回结果。下面是一个JavaAction接口类的示例代码: ```java public interface JavaAction { public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; } ``` 在上面的代码中,JavaAction接口包含了一个execute()方法,它接受HttpServletRequest和HttpServletResponse对象作为参数。在这个方法中,我们可以编写处理请求的业务逻辑。 在Java Web开发中,我们通常会编写一个类来实现JavaAction接口,并在该类中实现execute()方法。例如: ```java public class MyAction implements JavaAction { public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理请求的业务逻辑 ... // 返回结果 RequestDispatcher rd = request.getRequestDispatcher("/result.jsp"); rd.forward(request, response); } } ``` 在上面的代码中,我们编写了一个名为MyAction的类,它实现了JavaAction接口,并实现了execute()方法。在该方法中,我们可以编写我们的业务逻辑,并返回结果。在这个例子中,我们将请求转发到result.jsp页面。 在实际开发中,我们可以根据业务逻辑的不同,编写多个JavaAction的实现类,以处理不同的请求。然后将这些实现类配置到控制器中,以便能够根据不同的请求路径,调用不同的JavaAction实现类来处理请求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值