[英]javafx.fxml.LoadException: StackPane is not a valid type
我需要將 BorderPane 包含在 StackPane 中。 對於使用 JFXDialog 框。 JFXDialog() 的第一個參數需要是 StackPane 變量。 我不能傳遞 BorderPane 變量而不是那個。 所以我嘗試在 BorderPane 周圍創建一個新的 StackPane 標簽
示例.fxml
<StackPane fx:id="rootPane" xmlns="http://javafx.com/javafx/8.0.112-ea"
xmlns:fx="http://javafx.com/fxml/1">
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity"
minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"
prefWidth="600.0" style="-fx-background-color: #181818;" xmlns="http://javafx.com/javafx/16"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController">
<left>
.........
.........
</BorderPane>
</StackPane>
但是在周圍添加此標記后,Sample.fxml 未使用 SceneBuilder 打開,當我嘗試運行 JavaFx Main 類時,出現此錯誤。
javafx.fxml.LoadException: StackPane is not a valid type.
示例控制器.java
....
public class SampleController implements Initializable {
...
@FXML
private StackPane rootPane;
@FXML
private void migrateButtonAction(ActionEvent event){
JFXDialogLayout dialogLayout = new JFXDialogLayout();
JFXDialog dialog = new JFXDialog(rootPane,dialogLayout, JFXDialog.DialogTransition.TOP);
if(inputLocationField.getText() == ""){
JFXButton button = new JFXButton("Okay..I'll Check");
button.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent mouseEvent) ->{
dialog.close();
});
dialogLayout.setBody(new Text("Please Fill all the text boxes"));
}
}
}
大多數 IDE 在設計時會添加最少的導入集。 這意味着它將僅顯式導入表單中正在使用的布局集。
重構布局時,最容易忘記的事情之一是向.fxml
文件添加導入以支持新的布局類型。
在這種情況下,支持 StackPane 所需的最小更改是添加一個 import 語句:
<?import javafx.scene.layout.StackPane?>
到.fxml
文件的導入部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.