0

javaFX のコンボボックスに問題があります。Scene Builder でコンボボックスを設計します。

<ComboBox fx:id="categoryComboBox" prefHeight="21.0" prefWidth="405.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
      <items>
        <FXCollections fx:factory="observableArrayList">
          <String fx:value="Woodenware" />
          <String fx:value="Stoneware" />
          <String fx:value="Metalware" />
          <String fx:value="Fabric" />
        </FXCollections>
      </items>
    </ComboBox>

これは私のコントローラクラスです:

 @FXML
private ComboBox<?> categoryComboBox;
public void setCategoryComboBox(ComboBox<String> categoryComboBox) {
    this.categoryComboBox = categoryComboBox;
}

public ComboBox<String> getCategoryComboBox() {
    return categoryComboBox;
}

@FXML
private void comboBoxSelection(ActionEvent event) {
   categoryComboBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
         public void changed(ObservableValue<? extends String> ov, 
             String old_val, String new_val) {
                String categoryStr =  getCategoryComboBox().getValue().toString(); //Don't know what to put here
     }

コンボボックスから選択したアイテムを取得しようとすると:

  int category = panel.getCategoryComboBox().getValue()

「互換性のないデータタイプです。理由がわかりません。シーンビルダーとネットビーンズは初めてなので、どこが間違っているのか教えてください。」というエラーメッセージが表示されます。

前もって感謝します。

4

2 に答える 2

0

エラーは次の行にあります。

private ComboBox<?> categoryComboBox;

?からにキャストすることはできませんint。したがって、この行を次のように変更します。

private ComboBox<Integer> categoryComboBox;

次に、方法を変更する必要があります。

public ComboBox<String> getCategoryComboBox() {...}

 public ComboBox<Integer> getCategoryComboBox() {...}
于 2017-06-08T13:51:49.283 に答える