如何传递其他参数?
以下是一些示例代码,可以尝试明确我想要做的事情:
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();
});
已经阅读了很多与此相似的问题,但我无法将其放在首位。
答案 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);
}
}