如何设置动态填充的多级下拉框表单?

这是我的第一个 StackOverflow 问题。我正在实习,遇到了一些障碍。

我想在要求您提供国家和州的表单中实现类似于下拉框的功能,在选择国家后,州菜单会自动填充该国家/地区的州。

我有建筑物、这些建筑物中的楼层以及这些楼层中的空间的数据。我想设置一个多层下拉框,以便使用我正在开发的 JavaFX 表单的人可以从第一个菜单中选择一个建筑物,然后他可以在第二个下拉框中从该建筑物中选择楼层,并且这将使他能够在该楼层的建筑物内选择确切的办公室或空间。

我只想根据第一个和第二个选择正确填充第二个和第三个下拉框。

我最初的想法是拥有多层表,其中构建表中的条目与子表有关系。我不知道这是否可能。我想要一些指导。

谢谢。


眼眸繁星
浏览 129回答 3
3回答

千万里不及你

这是 JavaFX 中的一个快速示例,可让您开始让它们在第一个框的操作中动态更改第二个框的设置值,依此类推,无论您需要多少组合框public class Main extends Application {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void start(Stage stage) {&nbsp; &nbsp; &nbsp; &nbsp; ComboBox comboBox2 = new ComboBox();&nbsp; &nbsp; &nbsp; &nbsp; ComboBox comboBox = new ComboBox();&nbsp; &nbsp; &nbsp; &nbsp; comboBox.getItems().addAll("Country 1", "Country 2", "Country 3");&nbsp; &nbsp; &nbsp; &nbsp; comboBox.setOnAction(event -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; comboBox2.getItems().clear();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < 5; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; comboBox2.getItems().add("State "+i+" "+comboBox.getValue().toString());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; VBox vBox = new VBox();&nbsp; &nbsp; &nbsp; &nbsp; vBox.getChildren().addAll(comboBox, comboBox2);&nbsp; &nbsp; &nbsp; &nbsp; Scene scene = new Scene(vBox);&nbsp; &nbsp; &nbsp; &nbsp; stage = new Stage();&nbsp; &nbsp; &nbsp; &nbsp; stage.setScene(scene);&nbsp; &nbsp; &nbsp; &nbsp; stage.show();&nbsp; &nbsp; }&nbsp; &nbsp; public static void main(String[] args) { launch(args); }}

翻翻过去那场雪

我只想拥有三个ChoiceBox。第一个可能是静态填充的,而第二个和第三个最初是隐藏的(不可见)。在第一个的选择事件中,您通过在第一个中获取所选元素并将其设置为可见来填充第二个。第三个也一样,在第二个的评选活动上。提示:设置一个 ObservableList 作为第二个和第三个 ChoiceBox 的项,这样当你得到一个新的选择时你只需要改变列表中的元素。最后提示:当第一个 ChoiceBox 更改选择时,记得再次隐藏第三个框!

慕田峪7331174

我不确定您是否需要使用 SQL,但如果您想从 SQL 表中读取数据,这可能是一个选项。如果您想在选项中进行硬编码并使用 if 语句逻辑使以下下拉列表出现在选择前一个下拉列表之后,这是一种可能的解决方案。我为一个项目做了类似的事情。以下是我创建下拉菜单的步骤:首先,创建一个可观察列表:import javafx.collections.*;#i should say wildcard imports are not optimal and you should find out what specific import you need but I am not sure so I used the wildcard.import java.util.ArrayList;#I am not sure what imports you have already, but you made need moreObservableList varName = FXCollections.observableArrayList();&nbsp; &nbsp;ComboBox<String> varName2 = new ComboBox<>(varName);您应该在类级别执行此操作以避免任何范围问题。第二步是向下拉菜单添加数据。您使用 .add() 方法执行此操作varName.add("option 1");varName.add("option 2");这会向下拉列表添加选项。提醒一下,您还必须将下拉列表添加到窗格中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java