实施java.awt.event.ActionListener
接口的最佳方法是什么?
让您的类实现ActionListener并将其添加为ActionListener:
class Foo implements ActionListener{
public Foo() {
JButton button = new JButton();
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
}
}
或添加匿名ActionListener类的对象:
class Foo{
public Foo() {
JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
}
}
有些人(jeanette / kleopatra)表示几乎 从不
使用ActionListener,而是使用诸如AbstractAction之类的Action。让GUI类实现侦听器几乎总是一个糟糕的理想选择,因为这违反了单一职责原则,并使您的代码更难以维护和扩展,因此,我强烈建议您不要这样做。
因此,例如,一个内部类:
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
class Foo {
public Foo() {
JButton button = new JButton(new ButtonAction("Action", KeyEvent.VK_A));
}
private class ButtonAction extends AbstractAction {
public ButtonAction(String name, Integer mnemonic) {
super(name);
putValue(MNEMONIC_KEY, mnemonic);
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("button pressed");
}
}
}
实现接口的最佳方法是什么? 让您的类实现ActionListener并将其添加为ActionListener: 或者添加匿名ActionListener类的对象:
问题内容: 我最近正在做一个编程任务,要求我们用代码实现由UML图指定的程序。在某一时刻,该图指定我必须创建一个匿名JButton,该JButton显示一个计数(从1开始)并在每次单击时递减。JButton及其ActionListener都必须是匿名的。 我想出了以下解决方案: 这将添加一个匿名JButton,然后添加另一个(内部)匿名ActionListener来处理事件并根据需要更新按钮的文本
我在一个父类中与Java中的ActionListener作斗争,我尝试了一系列可能的解决方案,但都无法使其工作。这在这里也没有帮助:Java actionlistener在不同的类中执行actionPerformed 问题如下: 父类 子类
我最近刚刚开始学习如何使用swing,并且一直在遵循我在网上找到的教程。我基本上遵循了“逐字逐句”的教程,但我发现了一个错误: 记分板不是抽象的,并且不会覆盖ActionListener中的抽象方法actionPerformed(ActionEvent) 所以我的问题是,如果类不是抽象的,我如何将ActionListener实现到我的类(ScoreBoard)中? 下面是整个代码:(因为我不知道问
问题内容: JFrameWithPanel不是抽象的,并且不会重写java.awt.event.ActionListener公共类中的抽象方法actionPerformed(java.awt.event.ActionEvent)JFrameWithPanel扩展了JFrame实现ActionListener 我没有得到这个代码。Book and Java网站告诉我这是该方法的语法,但是此错误再次不
然后在'main'类中,我将'panel'添加到JFrame中。 我的问题是,我正在尝试实现一个actionListener到一个添加在'Panel'类内部的按钮。actionListener函数将添加更多按钮并使用G.DrawString的按钮。现在,我要将ActionListener放置在哪里,以便这样做呢?如何将g.drawString用于特定的面板,而g.drawString行位于另一个类