[英]JavaFX events/listeners/handlers
我的場景中有2個listViews和2個自定義控件。 當我在listView中按一個項目時,我想引發該事件,然后能夠在應用程序中的其他任何地方進行處理。 理想情況下,我希望我的2個自定義控件偵聽此事件,並在引發事件時進行處理。
不確定這是否正確,但到目前為止我有這個
這是我的自定義事件,我也想傳遞一個關於哪個Offer的參數,但是不確定如何執行此操作?
public class OfferChangedEvent extends Event {
private static final long serialVersionUID = 1L;
public static final EventType<OfferChangedEvent> OFFER_CHANGED = new EventType<OfferChangedEvent>(ANY, "OFFER_CHANGED");
public OfferChangedEvent() {
this(OFFER_CHANGED);
}
public OfferChangedEvent(EventType<? extends Event> arg0) {
super(arg0);
}
public OfferChangedEvent(Object arg0, EventTarget arg1, EventType<? extends Event> arg2) {
super(arg0, arg1, arg2);
}
}
現在在我的一個自定義控件上,單擊按鈕時引發事件,就像這樣
@FXML
public void showOffer(ActionEvent event) {
Button btnView = (Button)event.getSource();
// can i pass in parameter of the offer here??
btnView.fireEvent(new OfferChangedEvent());
}
現在我想要一個列表視圖來監聽事件並處理它,我有這個但它沒有用
// when offer is changed, we dont want to see events
this.eventListPane.addEventHandler(OfferChangedEvent.OFFER_CHANGED, new EventHandler<OfferChangedEvent>() {
@Override
public void handle(OfferChangedEvent event) {
Console.Log("Recived");
eventListPane.setVisible(false);
// How can i get the argument of the offer passed???
}
});
不幸的是,這個問題沒有簡單的答案。 對於您的情況,大約有3種不同的方式連接應用程序,以便不同的部分可以對其他部分的更改做出反應:
您使用哪一個取決於各種因素,但是考慮到您在上面所做的事情,我將采用第三點。 您可以嘗試這個https://github.com/bennidi/mbassador
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.