2017-12-31 38 views
1

Im Versuch, einen String zu einem javafx comboBox hinzuzufügen, aber ich halte den obigen Fehler bekommen:/
javafx fxml ComboBox Fehler

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

Nach einer Liste mit, bekomme ich

inkompatible Typen: String kann nicht konvertiert werden # 1
wo CAP # 1 ist ein frischer Typ-Variable zu CAP: Object von der Erfassung von
CAP # 1 erstreckt?

+0

versuchen Sie, Ihren Code in einem anderen Compiler zu kompilieren! –

+0

Können Sie die Deklaration von 'room_id' im Controller anzeigen? –

Antwort

3

Erklären Sie einfach das Feld room_id in Ihrer Controller-Klasse als

@FXML 
private ComboBox<String> room_id; 

Wenn Sie

@FXML 
private ComboBox<?> room_id; 

room_id.getItems() unter Verwendung gibt einen ObservableList<?> das heißt eine ObservableList mit unbekanntem Elementtyp und String nicht auf diese Art zugeordnet werden kann.

+1

Nach 6 Stunden, eine Antwort, die funktioniert! DANKE <3 –

0

Dies liegt daran, dass der ComboBox-Elementtyp nicht festgelegt ist, daher wird er mit "?" wie folgt aus:

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

so die fxml ComboBox zu zwingen, etwas zu fügen zu haben String-Werte haben:

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

oder stellen Sie die beobachtbaren Liste von Code wie folgt:

Java ComboBox .setItems (ObservableList < T > value)

+0

Ich muss die Elemente nach Code –

+0

ja, ich weiß, fügen Sie einfach die FXCollections-Tags wie in der Antwort gezeigt, und versuchen Sie den gleichen Code erneut! –

+0

hast du die ? –