2016-05-03 5 views
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); 
    } 
} 

私はこのエラーを取得する

java.io.IOException: javafx.fxml.LoadException: Invalid attribute. 

私は二重のすべてをチェックしましたコードは正常に見えます。 FXMLに追加しようとしている値を削除するとエラーが消えますが、コンボボックスは空になります。 Stringは有効な型ではないと言います。どうすればこの問題を解決できますか?それはなぜ無効ですか?私はここで同様の質問をチェックしましたが、エラーはFXCollectionsをインポートしないことによって発生します。私はそれをインポートしたので、間違ったインポートによってエラーが発生していないと思います。

答えて

4

はあなたのFXMLへ

<?import java.lang.String?>

を追加します。

関連する問題