2016-04-01 13 views
0

backgroundChoiceBoxというChoiceBoxオブジェクトを作成しました。私はプログラムを実行すると、選択ボックスがエラーなしで表示されますchoiceboxをクリックするたびにエラーが発生する

backgroundChoiceBox.getItems().addAll("Trees", "Mountains"); 
backgroundChoiceBox.setValue("Trees"); 

:私は次の2行のコードを追加して、initializeメソッドで

@FXML 
private ChoiceBox<String> backgroundChoiceBox = new ChoiceBox<>(); 

:私は私のコントローラクラスに次のコードを追加しましたコンソールに送信されます。しかし、選択ボックスをクリックすると、次のエラーが表示されます。

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: argument type mismatch 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.reflect.misc.Trampoline.invoke(Unknown Source) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.reflect.misc.MethodUtil.invoke(Unknown Source) 
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(Unknown Source) 
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown Source) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source) 
    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source) 
    at javafx.event.Event.fireEvent(Unknown Source) 
    at javafx.scene.Scene$ClickGenerator.postProcess(Unknown Source) 
    at javafx.scene.Scene$ClickGenerator.access$8100(Unknown Source) 
    at javafx.scene.Scene$MouseHandler.process(Unknown Source) 
    at javafx.scene.Scene$MouseHandler.access$1500(Unknown Source) 
    at javafx.scene.Scene.impl_processMouseEvent(Unknown Source) 
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(Unknown Source) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Unknown Source) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown Source) 
    at com.sun.glass.ui.View.handleMouseEvent(Unknown Source) 
    at com.sun.glass.ui.View.notifyMouse(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) 

私のオプションのツリーとマウンテンはまだ表示され、クリックすることができますが、同じエラーが発生します。なぜ誰がこのことが起こっているのかを説明することができたら、それは素晴らしいことでしょう!事前に感謝

+0

このChoiceBoxについてFXMLファイルに何かがありますか?もしそうなら、共有してください。 –

+1

私は次のことがあなたのエラーを引き起こすのではないかと疑いますが、 '@ FXML'宣言された変数の' = new ChoiceBox <>(); 'は[ちょっと間違っています(http://stackoverflow.com/questions/26563347/having-an- issue-with-javafx-objects-losing-reference-once-theyre-put-into-an-ar)を実行します。 – jewelsea

+1

上記のコードは、JavaFX8でうまく動作します –

答えて

0

ChoiceBoxの初期化はFXMLファイルで処理する必要があります。例えば

<ChoiceBox fx:id="backgroundChoiceBox" value="Trees"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="Trees" /> 
      <String fx:value="Mountains" /> 
     </FXCollections> 
    </items> 
</ChoiceBox> 

現在、二回あなたのChoiceBoxを初期化しています。 FXMLファイルに1回、コントローラに1回。

は、あなたのコントローラクラスから= new ChoiceBox<>();を削除し、あなたの初期化メソッドから対応する

backgroundChoiceBox.getItems().addAll("Trees", "Mountains"); 
backgroundChoiceBox.setValue("Trees"); 

を削除します。その後、あなたのchoiceActionメソッドは例外なく動作するはずです。

関連する問題