gpt4 book ai didi

java - 如何操纵JavaFX中控件的数量?

转载 作者:行者123 更新时间:2023-11-30 06:07:48 25 4
gpt4 key购买 nike

我通过 JavaFX 的场景生成器设计了此 View 。其中有4个ComboBox。我希望有可能让用户选择使用多少个组合框以及使用哪个组合框。例如,我的目标是拥有 3 种模式:

  1. 允许用户使用全部4个ComboBox
  2. 允许用户仅使用一个ComboBox并让他选择它;
  3. 允许用户仅使用两个ComboBox,并让他们选择四个Controls的首选组合

任何设计或想法(及其实现)都受到欢迎,因为我目前没有很好的解决方案。我正在考虑使用每个 ComboBox 附近的 CheckBox 元素来启用或禁用它们,但无论如何它都不是很好。另外,我正在考虑放置 3 个 Buttons 来选择 3 种模式并动态填充我的 Container,但我不知道从哪里开始实现。

最佳答案

如果想让用户选择特定的ComboBox ,您可以使用JavaFX函数setDisable()来启用它这是在从 Node 继承的所有类上类(class)。

(查看之间的差异:setDisabled() vs setDisable())

在下面的例子中,我绑定(bind)了 disabledProperty()到相反selectedProperty()每个 CheckBox 。这样您就可以选择特定的组合框进行选择。希望这能让您开始了解 JavaFX 绑定(bind)的工作原理。

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Test extends Application
{
public static void main(String[] args){
launch(args);
}

@Override
public void start (Stage primaryStage) throws Exception {
VBox vBox = new VBox();

HBox hBox1 = generateComboBoxHBox();
HBox hBox2 = generateComboBoxHBox();
HBox hBox3 = generateComboBoxHBox();
HBox hBox4 = generateComboBoxHBox();
vBox.getChildren().addAll(hBox1, hBox2, hBox3, hBox4);

primaryStage.setScene(new Scene(vBox));
primaryStage.show();
}

// Create 4 of the same HBoxes for an example. Each HBox has a checkbox and combobox
private HBox generateComboBoxHBox(){
HBox hBox = new HBox();
CheckBox checkBox = new CheckBox();
ComboBox<String> comboBox = new ComboBox<>(FXCollections.observableArrayList("Option1", "Option2", "Option3", "Option4"));

comboBox.disableProperty().bind(checkBox.selectedProperty().not());

hBox.getChildren().addAll(checkBox, comboBox);
return hBox;
}

}

关于java - 如何操纵JavaFX中控件的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50924559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com