将ActionListener与JButton一起使用

| 因此,我是使用Java编程接口的新手。我有一个JButtons菜单,其中每个JButton都有一个与之关联的动作(所以我使用新的JButton(action)),但是一旦选择了一个按钮,我想关闭菜单,所以我将一个ActionListener附加到每个JButton做到这一点。 出于美观的原因,如果ActionListener在JButton的动作之前执行,我会很喜欢,但是我找不到一种不涉及添加新线程或创建新类的方法……有人有什么想法吗?另外,我正在使用Java 1.4,因此没有新奇的东西。     
已邀请:
        使用内部类的替代方法,可靠的方法-我知道您不想创建自己的类,但这使它很简单。
class MenuAction extends Action {
    public void actionPerformed() { /* close menu */ }
}

public void MyMenu() { // or where your menu construction code occurs
    ...
    JButton mybutton1 =
        new JButton(new MenuAction() {
                public void performAction() {
                    // close the menu first
                    super.actionPerformed();
                    // then perform the button\'s action
                    /* button1\'s behaviour */
                }
            });
    ...
    
        编辑:由于没有保证执行添加操作的顺序的保证,因此被视为不正确-参见评论 可以使用以下功能分配动作: http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/AbstractButton.html#setAction%28javax.swing.Action%29 而不是通过构造函数传递它,而是在之后分配它:
ActionListener closeMenu = ...;
Action myaction1 = ...;
JButton mybutton1 = new JButton();
mybutton1.addActionListener(closeMenu);
mybutton1.setAction(myaction1);
代码是伪的/未经测试的,但这是我要尝试的第一件事。     

要回复问题请先登录注册