【问题标题】:ComboBox in javaFXjavaFX中的组合框
【发布时间】:2013-06-16 19:56:30
【问题描述】:

我对 javaFX 中的组合框有一些问题。我在场景构建器中设计我的组合框:

<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()

它给了我一条错误消息“不兼容的数据类型,我不知道为什么。我是场景构建器和 netbeans 的新手,所以请告诉我我在哪里做错了。

提前致谢。

【问题讨论】:

标签: java combobox javafx scenebuilder


【解决方案1】:

您的 ComboBox 上有一个泛型类型说明符,因此它返回的任何值都是字符串。

您不能将 String 分配给 int,这就是您尝试这样做时遇到“数据类型不兼容”错误的原因。

如果您将类别类型设置为字符串,您将不再收到“不兼容的数据类型错误”

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

【讨论】:

  • 好的,非常感谢。我已经解决了,但我不确定我的做法是否正确。
  • 你在吗?我对组合框有一些问题
  • @Carol 我不确定您当前的问题是什么。我认为,如果您按照我的回答中的说明并查看 Shreyas 在评论中发布的要点示例,那么您将能够解决您原来的类型不兼容问题(提示:将所有 > 替换为 )。如果您仍有问题,请构建并发布 SSCCE 和完整的错误堆栈跟踪。
【解决方案2】:

错误在这一行:

private ComboBox<?> categoryComboBox;

您不能从? 转换为int。所以将此行更改为:

private ComboBox<Integer> categoryComboBox;

那你就得换个方法了:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 2017-02-08
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多