当前位置: 首页 > 面试题库 >

对动作侦听器进行编程的常用方法是什么?

皇甫智明
2023-03-14
问题内容

我刚刚开始学习如何使用动作侦听器。据我了解,它的工作方式如下:

  1. 默认情况下,有些类包含“ addActionListener”方法(例如,按钮类)。

  2. 使用此方法,我们向对象添加了动作侦听器。例如:listenedObject.addActionListener(listeningObject)

  3. 当执行带有“ listenedObject”的动作时,将调用“ listeningObject”的“ actionPerformed”方法。因此,这意味着当我们为侦听对象编写类时,我们需要在其中放置“ actionPerformed”方法。

对我来说尚不清楚的是,我们是否应该为每个要监听的对象创建一个新类。在我看来,这不是一个优雅的解决方案。另一方面,如果我们对所有(或至少许多)对象都具有一个动作侦听器类,那么就会遇到问题,因为此类的实例将不知道哪个对象正在调用“
actionPerformed”方法(并且我们需要知道,由于actionPerformed执行的操作因调用此方法的人而有所不同)。

我认为,我们需要创建的每个侦听对象都是“个人”动作侦听器,我们可以通过为动作侦听器的相应字段设置特定的值来做到这一点。但是我不确定这是标准的做法吗?人们通常如何做?


问题答案:

从我个人的经验来看,最常见的处理方法是创建一个匿名内联类。像这样:

listenedObject.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent evt) {
        // Your action handling code in here
    }
});

我经常看到人们对包含listenedObject的对象的方法进行调用。例如,在具有按钮的对话框中:

myOkayButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent evt) {
        okayButtonPressed();
    }
});

然后在对话框类中:

private void okayButtonPressed() {
    // Do what we need to do
}


 类似资料:
  • 问题内容: 我怎样才能使它成为特定方法? (我知道可以用一种方法将其全部抛弃,是的。 谢谢你们, 编辑:谢谢大家的快速反应,我的解释不是很清楚。 我调查了lambda的使用,这几乎是我在想的,尽管其他方式也很不错。 再次谢谢大家。 下次我会尝试变得更清晰,更快捷。 问题答案: 同样,您的问题仍然不清楚。您上面的代码 有 一种方法,可以将代码放入其中: 或者,您可以从该方法中调用外部类的方法: 或者

  • 在致力于提高渐进式web应用程序的性能时,我遇到了一个新功能,我发现很难理解这个概念。 什么是被动事件侦听器,在我们的项目中需要它吗?

  • 问题内容: 我必须在java swing actionperformed方法内部调用一个方法。但是,当我单击按钮时,什么也没有发生。如何解决这个问题呢? 问题答案: 您需要向按钮添加动作侦听器,以响应单击事件:

  • 在用java编写Minecraft插件时,您可以创建一个事件监听器方法,并将其命名为任意名称,但您必须传入事件监听者的类,例如: 我只是想知道,如果Bukkit API中的任何类都不知道该方法的名称,那么该方法是如何在“幕后”执行的?我希望我能很好地解释自己。谢谢

  • 我有一个JPA(Hibernate)项目,其中包含从XML orm.XML和Beans创建的实体,我有一个EntityManager和update、persist、remove、findById、findAll方法,但我需要添加一个过滤器监听器来检查保存、还原等之前和之后的Beans(我需要将一些值设置为null以返回客户机) 问候。

  • 下面的代码是项目的动作侦听器。基本上,我有 4 个单选按钮,当我单击一个时,我希望它更改屏幕上的变量。当我运行代码时,它只是将所有值相加。还有其他方法可以做到这一点吗?