首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解ActionListener

理解ActionListener
EN

Stack Overflow用户
提问于 2012-04-25 07:15:19
回答 1查看 4.2K关注 0票数 1

我刚刚开始关注Java本身和Java,我在理解"Action“概念时遇到了一些问题。人们说C#和Java非常相似,但这是另一回事,当你尝试它们并进行比较的时候。

我有以下自动生成的按钮动作侦听器:

代码语言:javascript
复制
btnNewButton.addActionListener(new ActionListener() 
{
    public void actionPerformed(ActionEvent e) 
    {
        lblNylabel.setText("New label text");
    }
});

我是这样理解的:

btnNewButton.addActionListener()

  • The方法通过对象"btnNewButton“调用非静态方法,将一个ActionListener实例作为参数

  • 自动代码通过"new ()”构造函数调用实例化ActionListener实例--我不理解的是,我无法亲自实例化ActionListener类,但方法调用中的参数可以是??

  • A "actionPerformed“方法是在新实例体中生成的,并在这里使用了您定义的"actionPerformed”方法,当按钮被点击时--完全有道理的

是否有可能以一种更理解/更简单的方式来帮助我理解ActionListener的概念?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 07:19:28

我不明白的是,我无法亲自实例化ActionListener类,但它可以作为方法调用??中的参数。

当你做的时候

代码语言:javascript
复制
new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        lblNylabel.setText("New label text");
   }
}

实际上,您正在创建一个anonymous subclass of ActionListener的实例。

它在语义上等同于做

代码语言:javascript
复制
class AnonymousActionListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        lblNylabel.setText("New label text");
   }
}

btnNewButton.addActionListener(new AnonymousActionListener());

(还有tada,作为奖励,您刚刚了解到您可以在Java中使用 ;-)

以下是几种常见的选择:

  1. 使用单独的普通类

类MyActionListener实现ActionListener {公共空actionPerformed(ActionEvent e) {lblNylabel.setText(“新标签文本”);}类YourClass {公共空yourMethod() {.BtnNewButton.addActionListener(新MyActionListener());}

(只有当另一个类能够像上面那样访问所需的variables.)

  • Same,但使用内部(非静态)类时,才有可能:

类YourClass {公共yourMethod() {.btnNewButton.addActionListener(new MyActionListener());} //内部类MyActionListener实现ActionListener { public void actionPerformed(ActionEvent e) {lblNylabel.setText(“新标签文本”);}}

(在这里,lblNylabel可能是内部类的作用域。)

  • 让封装类的自己实现 this,并使用this作为addActionListener的参数:

类YourClass实现ActionListener {公共空yourMethod() {.btnNewButton.addActionListener(this);}公共无效actionPerformed(ActionEvent e) {lblNylabel.setText(“新标签文本”);}

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10311014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档