Java中的addActionListener方法

时间:2016-12-23 21:34:59

标签: java events

我正在学习java,尽管谷歌搜索和阅读各种线程,但我仍然不完全清楚事件处理。如果这看起来显而易见,请参见下文并道歉,但我是自学成才,所以不会因为这一点而被标记下来了 - 你们也曾经是学习者!

请考虑以下代码:

JMenuItem openItem = new JMenuItem("Open");
openItem.addActionListener(this);
fileMenu.add(openItem);

在上面,我正在创建一个菜单项并传递当前类的对象,我将其写为'this'表示的参数。然后,这会触发我在我的类中实现的“Action Listener”接口,因此这会依次使用ActionEvent类型的事件参数触发actionPerformed方法,该参数提供有关已发生事件的详细信息。我的问题是:

我在JMenuItem类中找不到addActionListener方法,这是什么?并且此方法是否调用ActionListener接口,从而导致actionPerformed方法?

非常感谢!

2 个答案:

答案 0 :(得分:1)

  

我在JMenuItem类中找不到addActionListener方法,这是什么?

当你说你找不到它时,我想你必须意味着你无法在the class's API docs中找到它。如果你在文档中看得更远,你会发现它在从这个类的超类javax.swing.AbstractButton继承的方法中列出。该方法记录在那里,但你会发现特定的文档不是很有启发性。

  

并且此方法是否调用ActionListener接口,从而产生actionPerformed方法?

不直接,不。它记录了对参数的引用(在本例中是您的类的实例),以便在选择菜单项时,可以稍后调用该对象的actionPerformed()方法

总的来说,如果您尝试使用Swing编写GUI,那么您应该采用the Swing trail in the Java Tutorial。它有很多关于这些以及您可能会遇到的类似问题的信息。

答案 1 :(得分:0)

  

我在JMenuItem类中找不到addActionListener方法,这是什么?

您正在观察OOP的一个主要功能:继承

JMenuItem继承AbstractButton中的addActionListener方法正如您在公共API文档中看到的那样:https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuItem.html

  

并且此方法是否调用ActionListener接口,从而产生actionPerformed方法?

是的。