Java 将对象作为参数传递给ActionListener
如何传递附加参数 下面是一些示例代码,试图明确我想要做什么:Java 将对象作为参数传递给ActionListener,java,actionlistener,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...
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_类”,以便动作侦听器可以使用它
所以最终的结果是这样的,所以我可以在侦听器中使用我的类
A.create("Test", (evt, something) -> {
something.do_something();
});
我已经读过很多类似的问题,但我不能就此结束我的讨论。您可以在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);
}
}
您不需要添加额外的参数,只需创建一个实现ActionListener的类,并在其中设置您喜欢的任何成员变量。有道理。我想我现在不能使用Lambda了,是吗?“我想这很诱人,如果你唯一的工具是锤子,把一切都当作钉子”——亚伯拉罕·马斯洛如果你有什么理由需要在你的代码中包含Lambda,在问题中包含这个要求没有理由,只是问问。仍在学习中,所以我想确定我是否可以将它们用于上面的解决方案。我已经实现了您的解决方案并设置了成员变量,看起来效果不错。谢谢编辑:不知道如何接受你在上述评论中的答案,但这正是我所用的,并且正在发挥作用。