这是我的第一个StackOverflow问题。我正在实习,遇到了一些障碍。
我想在表格中实现类似于下拉框的功能,要求您提供国家和州信息,选择国家/地区后,状态菜单会自动填充该国家/地区的国家/地区。
我有建筑物,这些建筑物中的楼层以及这些楼层中的空间的数据。我想设置一个多层下拉框,以便使用我正在开发的JavaFX表单的人可以从第一个菜单中选择一栋建筑物,然后允许他在第二个下拉框中从该建筑物中选择楼层,然后这样他就可以选择该楼层那栋建筑物内的确切办公室或空间。
我只希望根据第一和第二选择正确填充第二和第三下拉框。
我最初的想法是要具有多层表,其中建筑表中的条目与子表有关系。我不知道这是否有可能。我想要一些指导。
谢谢。
答案 0 :(得分:2)
这是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); }
}
答案 1 :(得分:1)
我只需要三个 ChoiceBox 。第一个可能是静态填充的,而第二个和第三个可能最初是隐藏的(不可见)。
At the selection event of the first one,,通过在第一个元素中获取所选元素来填充第二个元素,并将其设置为可见。在第二个选择事件中,与第三个相同。
提示:将ObservableList设置为第二个和第三个ChoiceBox的项,因此,当您获得新选择时,只需更改列表中的元素即可。
最后提示:记得在第一个ChoiceBox更改选择时再次隐藏第三个方框!
答案 2 :(得分:0)
我不确定您是否需要使用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");
这会在下拉菜单中添加选项。提醒一下,您还必须将下拉列表添加到窗格中。