java JavaFx将两个“setOnAction”设置为同一个按钮
我从另一个类获取EventHandler,我想将这个EventHandler和其他ActionEvent设置为同一个按钮。有可能吗
代码如下。 按钮是:“btnAdd”
public void addActionListener(EventHandler<ActionEvent> eventHandlerSetNotSave){
btnAdd.setOnAction((e)-> {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Open Resource File");
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("pictures file format",
"*.TIF","*.JPG","*.PNG","*.GIF","*.JEPG");
fileChooser.getExtensionFilters().addAll(extFilter);
File file = fileChooser.showOpenDialog(null);
if (file != null &&
url.equals(emptyImageUrl)? true:alertMessageWarning("The viseme will change, and previous viseme will be delete.")) {
setImage("file:"+file.toString());
changeAfterSaved=false;
}
});
btnAdd.setOnAction(eventHandlerSetNotSave);
btnDelete.setOnAction((e)-> {
changeAfterSaved=true;
setImage(emptyImageUrl);
});
}
# 1 楼答案
调用
addEventHandler()
方法而不是setOnAction(...)
:# 2 楼答案
我不知道用JavaFX开箱即用有什么方法可以做到这一点,但有一个简单的解决方法。您可以创建一个简单的类,将事件转发给多个处理程序,如下所示:
然后可以将所有事件处理程序传递给构造函数,并将该类用作事件处理程序