我正在构建一个简单的应用程序,并在一个简单的 MVC 模式中实现它,其中控制器将事件处理程序添加到视图中。这是一个将处理程序附加到 UI 的示例控制器代码。
基本上,当单击 UI 的保存按钮时,代码会添加一个事件处理程序。UI 包含名称和 ID 号条目。我想要发生的是将名称和 ID 号传递给actionPerformed
函数。
ui.onAddStudent(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
System.out.print("test");
}
});
UI中的接收函数(在另一个文件中)如下。
public void onAddStudent(ActionListener handler){
//something missing here
addStudent.addActionListener(handler);
}
我不是很喜欢Java,因为它不是我的强项。我实际上是在做 JavaScript。现在,一个类似的处理程序在 JavaScript 中,可以使用call()
orapply()
方法来调用处理程序并传入额外的参数。如果上面的代码是在 JS 中,它会像
//in the controller
ui.onAddStudent(function(event,id,name){
//I can use id and name
});
//in the UI
ui.onAddStudent = function(handler){
//store into a cache
//add handler to the button
}
//when student is added (button clicked)
handler.call(this,event,id,name);
我如何在 Java 中做同样的事情?