2016-07-27 4 views
0

私はIntelliJのシーンビルダとJava FXを使用して私の最初のGUIプログラムを作っています。私はドキュメントのオフ私のchoiceboxをベースとIntelliJのは、法を認識しなかったことが判明IntelliJはドキュメントからコピーされた基本JavaFXプログラムをコンパイルしません

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ChoiceBox.html

:私はここでのJavaのドキュメントを見て、私は選択ボックスを作りたかったです。ですから、私はドキュメントから貼り付けられたコピーをまっすぐに伸ばし、まだエラーが出ています。次のように私のコードは次のとおりです。

package sample; 

import javafx.scene.control.ChoiceBox; 

public class Controller { 
ChoiceBox cb = new ChoiceBox(); 
cb.getItems().addAll("item1", "item2", "item3"); 
} 

「.getItems()」赤いテキストであり、エラーが 『シンボルのgetItemsを解決することはできません』記載されたエラーです。他の誰かがプログラムをコンパイルし、自分のマシンで動作しました。

答えて

3
cb.getItems().addAll("item1", "item2", "item3"); 

をメソッドの中に入れる必要があります。

正しいコードは次のとおり

package sample; 

import javafx.fxml.FXML; 
import javafx.scene.control.ChoiceBox; 

public class Controller { 
    @FXML private ChoiceBox cb; 

    public void initialize() { 
     cb.getItems().addAll("item1", "item2", "item3"); 
    } 
} 

initialize方法フィールドを注入した後FXMLLoaderによって呼び出されます。


編集:

+0

クールFXMLロード/初期化時に追加されました@のファビアンのコメント。今私はこれを実際に動かすだけでいいです。今コンパイルされますが、choiceboxをクリックすると選択肢が表示されません。 IDの一致とそのすべて。私は選択肢や何かを設定するために他の方法を行う必要があると思いますか? – user2778506

+0

@ user2778506:フィールドとして 'cb'を保持し、' @FXML private ChoiceBox cb; 'で注釈を付ける必要がありますが、初期化しません(' FXMLLoader'がこれを行います)。ここでは例を見つけることができます:http://stackoverflow.com/documentation/javafx/1580/fxml-and-controllers#t=201607272009269385103、fxmlの 'fx:id'属性とコントローラの対応するフィールドを探してください... – fabian

+0

@Fabianは 'JavaFX'の世話をしてくれてありがとう、私は前にプラットフォームを実際に使ったことはありません:) – Jeeter

関連する問題