ComboBox和ChoiceBox不显示内容

时间:2019-03-29 07:52:18

标签: javafx

ComboBoxCheckBox将元素设置在其中https://ibb.co/7YWQfLh,但不显示该元素的https://ibb.co/Mfy2mZb

我在不同的窗格(HBoxVBoxAnchorPaneGridPane)中创建框,结果相同。 我使用了Enum和通常的String,结果相同。

public class TestFXController {

    @FXML
    private ComboBox<String> asd;

    @FXML
    private ChoiceBox<String> fgh;

    @FXML
    void initialize() {
        ObservableList<String> langs = 
            FXCollections.observableArrayList("Java", "JavaScript", "C#", "Python");
        asd = new ComboBox<>(langs);
        fgh = new ChoiceBox<>(langs);

    }
}
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-    Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0"     xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="TestFXController">
   <children>
      <ComboBox fx:id="asd" prefWidth="150.0" />
      <ChoiceBox fx:id="fgh" layoutX="14.0" layoutY="70.0" prefWidth="150.0" />
   </children>
</AnchorPane>

怎么了。我想要这个结果。

https://metanit.com/java/javafx/pics/4.16.png

2 个答案:

答案 0 :(得分:2)

您的组合框和选择框已经存在,只要它们必须更正FXML中设置的fx:id(asd和fgh),因此您不需要以下内容:

asd = new ComboBox<>(langs);
fgh = new ChoiceBox<>(langs);

例如,从您的initialize方法中,您可以像这样在组合框中设置项目:

ObservableList<String> langs = FXCollections.observableArrayList("Java", "JavaScript", "C#", "Python");
asd.setItems(langs);

那应该很好用,只要您已经设置了正确的fx:id(您希望拥有),就可以在下图中看到它对我有用。

enter image description here

希望它会有所帮助:)

答案 1 :(得分:1)

罗伯特所说的话,如果您想在项目中减少代码,可以像这样将项添加到fxml中

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="TestFXController">
    <children>
        <ComboBox fx:id="asd" prefWidth="150.0">
            <items>
                <FXCollections fx:factory="observableArrayList">
                    <String fx:value="Java" />
                    <String fx:value="JavaScript" />
                    <String fx:value="C#" />
                    <String fx:value="Python" />
                </FXCollections>
            </items>
        </ComboBox>
        <ChoiceBox fx:id="fgh" layoutX="14.0" layoutY="70.0" prefWidth="150.0">
            <items>
                <FXCollections fx:factory="observableArrayList">
                    <String fx:value="Java" />
                    <String fx:value="JavaScript" />
                    <String fx:value="C#" />
                    <String fx:value="Python" />
                </FXCollections>
            </items>
        </ChoiceBox>
    </children>
</AnchorPane>