2016-11-15 16 views
1

私は自分の問題を解決する方法を探していましたが、私の状況に直接適用できるものは見つかりませんでした。基本的にはいくつかの列挙型クラスがありますが、ユーザーが選択できるコンボボックスに文字列値を格納したいのですが、単にComboBox.getItems().setAll(Enum.values());を使用してもリストに値が設定されません。JavaFXでは、コンボボックスにenumクラスを設定しますか?

私のコードは以下の通りです。この投稿のすべてが、この投稿のクラッタを減らすために私のギブスにあります。また、私のGUIのスクリーンショットと、JavaFXでの割り当て方法についても説明します。おそらく問題がどこにあるのでしょうか。前もって感謝します!

のgit:コントローラクラスのhttps://github.com/jparr721/Blue-Box2/tree/master/src/blueBox/GUI

コード:列挙型クラスの

public class RentGameDialogController extends RentalStoreGUIController implements Initializable{ 

    @FXML private TextField nameField, rentedOn, dueBack; 
    String name; 
    Date dateRentedOn, dateDue; 
    GregorianCalendar rented, due; 
    @FXML ComboBox<GameType> cbGame; 
    @FXML ComboBox<PlayerType> cbConsole; 
    @FXML Button cancel, addToCart; 
    @FXML int counter = 0; 
    private Stage currentStage; 


    @Override 
    public void initialize(URL location, ResourceBundle resources) { 

     rentedOn = new TextField(); 
     dueBack = new TextField(); 

     cbGame = new ComboBox<>(); 
    } 

    @FXML 
    public void handleGameComboBox() { 
     cbGame.getItems().setAll(GameType.values()); 
    } 

コード:

public enum GameType { 
    THE_WITCHER("The Witcher 3"), 
    CALL_OF_DUTY_AW("Call of Duty: Advanced Warfare"), 
    CALL_DUTY_BLOP3("Call of Duty: Black Ops 3"), 
    CALL_OF_DUTY_IW("Call of Duty: Infinite Warfare"), 
    THE_ELDER_SCROLLS("The Elder Scrolls IV: Skyrim"); 

    private String game; 

    GameType(String game) { 
     this.game = game; 
    } 

    public String GameType() { return game; } 

    @Override public String toString() { return game; } 

} 

画像: https://i.stack.imgur.com/chTYt.png

+1

です。あなたが 'GameType.values();を印刷すると、何を得るのですか? –

+0

また、 'ComboBox'の' onAction'が 'handleGameComboBox()'に設定されていることに気付きました。この場合、今あるコードを(アイテムの設定)取って、 'initialize'メソッドに入れたいと思うかもしれません。これは' onAction'の前に実装されています –

+0

私が印刷するとき 'のコードは(GameType g:GameType.values()){ System.out.println(g); } ' 私は列挙型クラスに格納されている文字列値を返しますが、私はそれらを表示して、私のコンボボックスで選択できるようにしようとしています。彼らはうまく印刷されているので、私はそれが働いていることを知っている、私はこれを行う方法がわからないです。 –

答えて

0

まず、あるフィールドを初期化したことがありません0123によって注射された。したがって、現在のinitialize()メソッドにあるすべてのコードを削除してください。

ObservableListは、可変パラメータまたは配列パラメータをとるaddAll(...)メソッドを定義しています。だからあなたが必要なのは

@Override 
public void initialize(URL location, ResourceBundle resources) { 

    cbGame.getItems().addAll(GameType.values()); 
} 
+0

コンボボックスを@FXMLタグで宣言する必要がありますか?この方法の上に? –

+0

はい。宣言を変更しないでください。初期化を解除するだけです。初期化は通常の方法で '@ FXML'アノテーションとFXMLファイルの' fx:id '属性によって行われます。 –

+0

また、これらの値をGUIのコンボボックスにどのように追加するのですか? –

関連する問題