将ActionListener与JButton一起使用



所以,我对用java编程接口有点陌生。我有一个JButton菜单,每个JButton都有一个与之相关的操作(所以我使用新的JButton(action)),但是一旦选择了一个按钮,我就想关闭菜单,所以我在每个执行此操作的JBbutton上都附加了一个ActionListener。

出于美观的原因,我希望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 */
                }
            });
    ...

EDIT:由于执行添加操作的订单上没有担保人,因此被视为不正确-请参阅注释

可以使用以下功能分配操作:

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);

代码是伪的/未经测试的,但这是我要尝试的第一件事。

相关内容

  • 没有找到相关文章

最新更新