gpt4 book ai didi

java - 来自自定义类的 fireEvent

转载 作者:行者123 更新时间:2023-11-29 07:49:29 27 4
gpt4 key购买 nike

我有以下类 ProtokollEvent

public class ProtokollEvent extends Event {

//variable holds all devices in given protokoll
private ObservableList<Device> devicesList;

//variable holds SaveResult
private SaveResult result;

//final ProtokollEvents
public static final EventType<ProtokollEvent> PROTOKOLL_SAVE = new EventType(ANY, "PROTOKOLL_SAVE");
public static final EventType<ProtokollEvent> PROTOKOLL_SAVE_DONE = new EventType(ANY, "PROTOKOLL_SAVE_DONE");
public static final EventType<ProtokollEvent> PROTOKOLL_UPDATED = new EventType(ANY, "PROTOKOLL_UPDATED");
public static final EventType<ProtokollEvent> PROTOKOLL_DELETED = new EventType(ANY, "PROTOKOLL_DELETED");

public ProtokollEvent() {
this(PROTOKOLL_SAVE);
}

public ProtokollEvent(EventType<? extends Event> arg0) {
super(arg0);
}

public ProtokollEvent(Object arg0, EventTarget arg1, EventType<? extends Event> arg2) {
super(arg0, arg1, arg2);
}

/**
* getDevices will return current {@link Device} as ObservableList
*
* @return {@link ObservableList} of type {@link Device}
*/
public ObservableList getDev() {
return devicesList;
}
/**
* setDevices will set devicesList
* @param devices ObservableList {@link Device}
*/
public void setDev(ObservableList devices) {
this.devicesList = devices;
}
/**
* get the result which is returned from calling saveProtokoll
* @return result {@link SaveResult}
*/
public SaveResult getResult() {
return result;
}
/**
* set the result which is returned after calling saveMessprotokoll in RestCall
* @param result {@link SaveResult}
*/
public void setResult(SaveResult result) {
this.result = result;
}

在二类

public class SaveUtils {

private MainWindowController controller;
private ObservableList<RowContainerPruefvorschriftController> rows;
private Protokoll lastSavedProtokoll;
private Protokoll currentSavingProtokoll;

public SaveUtils(MainWindowController control){
this.controller = control;
}

private void startSaving(){
currentSavingProtokoll = createProtokoll();
boolean state = controller.networkOnline.get() ? saveOnline() :saveOffline();
}

public void setRows(ObservableList<RowContainerPruefvorschriftController> rows) {
this.rows = rows;
//if rows get set start saveing the data
startSaving();
}

private boolean saveOffline(){
return false;
}
private boolean saveOnline() {
RestCall call = controller.getCall();
//call saveMessprotokoll and look what SaveResult returns
SaveResult result = call.saveMessprotokoll(currentSavingProtokoll);
//create ProtokollEvent to tell all consumers if all was ok
ProtokollEvent save = new ProtokollEvent(ProtokollEvent.PROTOKOLL_SAVE_DONE);
save.setResult(result);
//HOW to fire/dispatch the ProtokollEvent here??????
//TODO: need to fire this event and listen for it in other classes
if(result.getResult()>0){
controller.setLoggerMessage("SavedOnline->Protokoll-Nr.:"+result.getProtokollnr());
}
else {
controller.setLoggerMessage("SavedOnline not successful->Error:"+result.getError_message());
}
return true;
}

在 saveOnline 函数中,我创建了一个 ProtokollEvent 并将一些值传递给它。我现在想要的是触发或分派(dispatch)此事件,以便其他代码部分可以收听此事件。

我尝试使用 fireEvent(),但据我所知,Oracle-DOC 只有节点、Windows 和场景能够这样做。但是我怎么能用我的自定义类解决它呢?

另外我问自己 fireEvent 和 dispatchEvent 有什么区别?

最佳答案

找到解决方案。所有事件都可以通过静态方法触发

Event.fireEvent(EventTarget eventTarget,Event event)

其中 eventTarget 指定事件将经过的路径(取自 java 文档)。所以对于我的示例,我只是添加了以下行

Event.fireEvent(controller.getMainWindowBorderPane(),save);

是不是...

关于java - 来自自定义类的 fireEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com