ComboBox
和CheckBox
将元素设置在其中https://ibb.co/7YWQfLh,但不显示该元素的https://ibb.co/Mfy2mZb
我在不同的窗格(HBox
,VBox
,AnchorPane
,GridPane
)中创建框,结果相同。
我使用了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>
怎么了。我想要这个结果。
答案 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(您希望拥有),就可以在下图中看到它对我有用。
希望它会有所帮助:)
答案 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>