1
我嘗試通過FXML文件將項目添加到組合框中,但出現此錯誤。無法將項目添加到Combobox
javafx.fxml.LoadException: String is not a valid type.
/C:/Users/kim/Desktop/JavaFX/ComboboxFx/bin/application/Main.fxml:13
at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.createElement(Unknown Source)
at javafx.fxml.FXMLLoader.processStartElement(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at application.Main.start(Main.java:13)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(Unknown Source)
at java.lang.Thread.run(Unknown Source)
這裏是我的FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.collections.FXCollections?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" >
<children>
<ComboBox fx:id="comboBox">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value = "Gilbert" />
<String fx:value = "John" />
</FXCollections>
</items>
</ComboBox>
<Label fx:id="selection" layoutX="34.0" layoutY="65.0" prefHeight="17.0" prefWidth="102.0" text="Label" />
</children>
</AnchorPane>
主要
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Parent root = FXMLLoader.load(getClass().getResource("/application/Main.fxml"));
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
,當我通過現場Builder中打開它,我得到這個錯誤
java.io.IOException: javafx.fxml.LoadException: Invalid attribute.
我仔細檢查過的一切但代碼似乎很好。當我刪除我想要添加到FXML的值時,錯誤消失,但是我的組合框變空了。它說String不是一個有效的類型。我怎麼解決這個問題?爲什麼它是無效的?我在這裏查了類似的問題,但是錯誤是由於沒有導入FXCollections導致的。我導入它,所以我認爲這個錯誤不是由不良導入造成的。