为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

眼眸繁星 2023-03-02 15:15:00
这是我的第一个 StackOverflow 问题。我正在实习,遇到了一些障碍。我想在要求您提供国家和州的表单中实现类似于下拉框的功能,在选择国家后,州菜单会自动填充该国家/地区的州。我有建筑物、这些建筑物中的楼层以及这些楼层中的空间的数据。我想设置一个多层下拉框,以便使用我正在开发的 JavaFX 表单的人可以从第一个菜单中选择一个建筑物,然后他可以在第二个下拉框中从该建筑物中选择楼层,并且这将使他能够在该楼层的建筑物内选择确切的办公室或空间。我只想根据第一个和第二个选择正确填充第二个和第三个下拉框。我最初的想法是拥有多层表,其中构建表中的条目与子表有关系。我不知道这是否可能。我想要一些指导。谢谢。
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

这是 JavaFX 中的一个快速示例,可让您开始让它们在第一个框的操作中动态更改第二个框的设置值,依此类推,无论您需要多少组合框


public class Main extends Application {


    @Override

    public void start(Stage stage) {

        ComboBox comboBox2 = new ComboBox();


        ComboBox comboBox = new ComboBox();

        comboBox.getItems().addAll("Country 1", "Country 2", "Country 3");

        comboBox.setOnAction(event -> {

            comboBox2.getItems().clear();

            for (int i = 0; i < 5; i++) {

                comboBox2.getItems().add("State "+i+" "+comboBox.getValue().toString());

            }

        });



        VBox vBox = new VBox();

        vBox.getChildren().addAll(comboBox, comboBox2);


        Scene scene = new Scene(vBox);

        stage = new Stage();

        stage.setScene(scene);

        stage.show();

    }


    public static void main(String[] args) { launch(args); }


}


查看完整回答
反对 回复 2023-03-02
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

我只想拥有三个ChoiceBox。第一个可能是静态填充的,而第二个和第三个最初是隐藏的(不可见)。

在第一个的选择事件中,您通过在第一个中获取所选元素并将其设置为可见来填充第二个。第三个也一样,在第二个的评选活动上。

提示:设置一个 ObservableList 作为第二个和第三个 ChoiceBox 的项,这样当你得到一个新的选择时你只需要改变列表中的元素。

最后提示:当第一个 ChoiceBox 更改选择时,记得再次隐藏第三个框!


查看完整回答
反对 回复 2023-03-02
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我不确定您是否需要使用 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 more

ObservableList varName = FXCollections.observableArrayList();

   ComboBox<String> varName2 = new ComboBox<>(varName);

您应该在类级别执行此操作以避免任何范围问题。第二步是向下拉菜单添加数据。您使用 .add() 方法执行此操作


varName.add("option 1");

varName.add("option 2");

这会向下拉列表添加选项。提醒一下,您还必须将下拉列表添加到窗格中。


查看完整回答
反对 回复 2023-03-02
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信