[英]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.