簡體   English   中英

JavaFX FXML-使用fx:id獲取MenuItem

[英]JavaFX FXML - Getting MenuItem using fx:id

我正在使用Scene Builder構建Java應用程序的GUI。 對於每個元素,我都給了它一個fx:id以便以后可以參考它們。 我需要在其許多元素上使用setOnAction() ,例如:

((Button)mainPane.lookup("#submitButton")).setOnAction(e->{
    // ... code triggered when button is pressed ...
});

這適用於MenuItem以外的大多數元素。 當我嘗試以下操作時,Eclipse告訴我“無法從Node投射到MenuItem ”,並且它不起作用。

// Does not work
((MenuItem)mainPane.lookup("#about")).setOnAction(e->{
    // ... take user to about page ...
});

我看到MenuItem僅擴展了Object ,因此無法從Node進行強制轉換。 如何使用其fx:id取回MenuItem

注意:我知道我可以使用FXML的On Action ,但是我想利用Lambda函數並使事件處理代碼保持相同的樣式。

((Button)mainPane.lookup("#submitButton")) <-是一個糟糕的主意。

如果您的節點具有fx:id 您應該執行@FXML YourNodeType yourNodeFx:Id;

示例:在FXML中,您Button's fx:id="submitButton" 您的Controller代碼應如下所示:

@FXML Button submitButton;

在您的initialize方法中,您應該執行以下操作:

submitButton.setOnAction(event ->{
    //Your code here!
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM