2016-11-18 7 views
0

GUIに印刷する文字列値を取得できませんComboBoxを作成しました。基本的には、cbGame ComboBoxの値をJavaFXプログラムに割り当てるたびに、GUIを起動しようとすると不正な引数例外が発生します。完全なコードは私のGitHubにあります:https://github.com/jparr721/Blue-Box2 私は助けが必要なコードは次のとおりです。ComboBoxに文字列値を格納していないJavaFX

コントローラクラス:ここ

public class RentGameDialogController extends RentalStoreGUIController implements Initializable{ 

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


@Override 
public void initialize(URL location, ResourceBundle resources) { 
    cbGameOptions = FXCollections.observableArrayList(); 

    cbGameOptions.add("The Witcher 3"); 
    cbGameOptions.add("Call of Duty: Advanced Warfare"); 
    cbGameOptions.add("Call of Duty: Infinite Warfare"); 
    cbGameOptions.add("The Elder Scrolls IV: Skyrim"); 

    cbGame.setItems(cbGameOptions); 

} 

public void getName(){ 
    name = nameField.getText(); 

    try { 

     String[] firstLast = name.split(" "); 
     String firstName = firstLast[0]; 
     String lastName = firstLast[1]; 

    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

public void getRentedOn() throws ParseException { 
    DateFormat format = new SimpleDateFormat("MM/dd/yy"); 
    dateRentedOn = format.parse(rentedOn.getText()); 
    rented.setTime(dateRentedOn); 
} 

public void getDueBack() throws ParseException { 
    DateFormat format = new SimpleDateFormat("MM/dd/yy"); 
    dateDue = format.parse(dueBack.getText()); 
    due.setTime(dateDue); 
} 


@FXML 
public void handleCancelButtonAction (ActionEvent event) { 
    currentStage = (Stage) cancel.getScene().getWindow(); 
    currentStage.close(); 
} 

@FXML 
public void addToCartButton (ActionEvent event) { 

    currentStage = (Stage) cancel.getScene().getWindow(); 
    currentStage.close(); 
}} 

は、私はコンボボックスにcbGameを割り当てるJavaFXアプリケーションです。 JavaFX GUI

+0

あなたの実際の質問にFXMLを投稿してください。不十分な内容の質問を投稿すると簡単に回答でき、簡単に答えを推測することができます。 –

+1

"それは私に不正な引数の例外を与える"あなたの質問を編集し、そのIllegalArgumentExceptionの完全なスタックトレースを含める。それは問題の原因となったコード行を正確に(そしてあなたに)伝えます。 – VGR

答えて

0

オーケー、まずあなたがcbGame.setItems(cbGameOptions);

を書かれている場所あなたが代わりに

cbGame.getItems().addAll(cbGameOptions); 
+1

どちらかがうまくいくはずです。それは問題ではありません。 –

-1

私はあなたがObservableListため@FXML注釈を必要としないと思う必要があります削除します。 @FXMLタグはFXMLで定義された値を注入するFXMLLoaderを可能にしますが、あなたのobservableListだから

@FXML private ObservableList<String> cbGameOptions; 

private ObservableList<String> cbGameOptions; 

・ホープ、このことができますする必要がありますFXMLLoader

で設定する必要はありません。 。

+0

'@ FXML'はここで理にかなっていませんが、なぜ実際には動作しなくなるのでしょうか? –

1

私は問題を知っています。あなたのコードを開き、fxmlでcomboBoxを使用していないことがわかりましたので、コンボボックスで変更します。SplitMenuButtonを使用しています。

enter image description here

@Override 
    public void initialize(URL location, ResourceBundle resources) { 
     cbGameOptions = FXCollections.observableArrayList(); 

      cbGameOptions.add("The Witcher 3"); 
      cbGameOptions.add("Call of Duty: Advanced Warfare"); 
      cbGameOptions.add("Call of Duty: Infinite Warfare"); 
      cbGameOptions.add("The Elder Scrolls IV: Skyrim"); 

      cbGame.getItems().addAll(cbGameOptions); 
    } 
関連する問題