Ing*_*nge 1 java javafx javafx-2 javafx-8
我有以下类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;
}
Run Code Online (Sandbox Code Playgroud)
}
在第二节课
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;
}
Run Code Online (Sandbox Code Playgroud)
}
在saveOnline函数中,我创建一个ProtokollEvent并传递一些值.我现在想要的是发射或发送此事件,以便其他代码部分可以听取此信息.
我尝试使用fireEvent(),但据我所知,Oracle-DOC只有NODE,Windows和Scene都可以这样做.但是我怎么能用我的自定义类来解决它呢?
另外我问自己什么是fireEvent和dispatchEvent之间的区别?
找到了解决方案.可以通过静态方法触发所有事件
Event.fireEvent(EventTarget eventTarget,Event event)
Run Code Online (Sandbox Code Playgroud)
其中eventTarget指定事件将通过的路径(取自java docs).所以对于我的例子,我刚刚添加了以下行
Event.fireEvent(controller.getMainWindowBorderPane(),save);
Run Code Online (Sandbox Code Playgroud)
做到了...
| 归档时间: |
|
| 查看次数: |
7277 次 |
| 最近记录: |