javafx fxml ComboBox错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javafx fxml ComboBox错误相关的知识,希望对你有一定的参考价值。

我试图将一个字符串添加到javafx comboBox但我不断收到上述错误:/

no suitable method found for add(String)
method Collection.add(CAP#1) is not applicable
  (argument mismatch; String cannot be converted to CAP#1)
method List.add(CAP#1) is not applicable
  (argument mismatch; String cannot be converted to CAP#1)
   where CAP#1 is a fresh type-variable:
  CAP#1 extends Object from capture of ?

CODE

room_id.getItems().add("Hello");

FXML

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>


<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.AutoMaven.ui.controller.ComboTestController">
   <children>
      <ComboBox fx:id="room_id" layoutX="170.0" layoutY="185.0" prefHeight="31.0" prefWidth="260.0" />
   </children>
</AnchorPane>

UPDATE

使用清单后,我明白了

不兼容的类型:字符串无法转换为CAP#1 其中CAP#1是一个新的类型变量: CAP#1扩展了Object的捕获?

ObservableList<String> list=FXCollections.observableArrayList("1","2","3","4");

room_id.setItems(list);
答案

只需将控制器类中的room_id字段声明为

@FXML
private ComboBox<String> room_id;

如果你正在使用

@FXML
private ComboBox<?> room_id;

room_id.getItems()返回ObservableList<?>,即具有未知元素类型的ObservableListString不能分配给此类型。

另一答案

这是因为未设置ComboBox元素类型,因此它默认为“?”。像这样 :

ComboBox<?> room_id = new ComboBox<>(); 

所以为了强制fxml ComboBox具有String值,你必须添加如下内容:

<ComboBox fx:id="cbo_Bacteriologie_Aesculine" prefHeight="21.0" prefWidth="105.0" GridPane.columnIndex="1" GridPane.rowIndex="0">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="string option" />
        </FXCollections>
    </items>
</ComboBox>

或者从代码中设置可观察列表,如下所示:

Java ComboBox .setItems (ObservableList < T > value)

以上是关于javafx fxml ComboBox错误的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX:FXML 打开图像格式错误的 URL 异常协议:e

JavaFX ComboBox CSS 样式

Javafx fxml onAction

通过代码关闭 fxml 窗口,javafx

JavaFX FileChooser 引发错误(可能很容易修复,但仍然很困惑)

无法在 javafx 中链接 fxml 和控制器文件变量 [重复]