有些人(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"); } }}


