将Object作为参数传递给ActionListener

时间:2016-06-26 20:16:50

标签: java actionlistener

如何传递其他参数?

以下是一些示例代码,可以尝试明确我想要做的事情:

public class A {

    public static void create(String txt, ActionListener evt){
        MenuItem item = new MenuItem(txt);
        SomeClass sample_class = new SomeClass();

        // Would like to do this...
        // item.addActionListener(evt, sample_class);

        item.addActionListener(evt);
    }

}

public class B {

    public static void init(){
        A.create("Test", evt -> {
            System.out.println("hi");
        });
    }

}

我想做的是传递“sample_class”,以便动作监听器可以使用它。

所以最终的结果就是这样,所以我可以在听众中使用我的课......

A.create("Test", (evt, something) -> {
    something.do_something();
});

已经阅读了很多与此相似的问题,但我无法将其放在首位。

1 个答案:

答案 0 :(得分:-1)

您可以在SomeClass中实现ActionListener并将事件封装在其中。

public class A {
    public static void create(String txt, ActionListener evt){
        MenuItem item = new MenuItem(txt);
        SomeClass sample_class = new SomeClass(evt);

        item.addActionListener(sample_class);
    }    
}

public class SomeClass implements ActionListener {
    ActionListener evt;

    public SomeClass(ActionListener evt) {
        this.evt = evt;
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        this.evt.actionPerformed(ae);
    }
}