如何使用CheckBox以获取用户的选择

发布时间 2023-05-27 15:26:48作者: JavaFX_HowTo

如何使用CheckBox以获取用户的选择

CheckBox 是一个复选框,它有两种状态:选中和非选中。

CheckBox 可以比较直观的表现用户的选择情况。

效果展示

image

示例代码

import java.util.Map;
import java.util.TreeMap;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class CheckBoxExample extends Application
{
    private Map<Integer, CheckBox> orderMap; // id -> CheckBox

    private void getOrder()
    {
        Map<Integer, String> orderedFruits = new TreeMap<>();
        for (Map.Entry<Integer, CheckBox> entry : orderMap.entrySet())
        {
            CheckBox checkBox = entry.getValue();
            int id = entry.getKey();
            if (checkBox.isSelected())
            {
                orderedFruits.put(id, checkBox.getText());
            }
        }

        if (orderedFruits.isEmpty())
        {
            System.out.println("You have no order");
        }
        else
        {
            System.out.println("Your order is: " + orderedFruits);
        }
    }

    @Override
    public void start(Stage window) throws Exception
    {
        VBox vBox = new VBox();
        vBox.setPadding(new Insets(10));
        vBox.setSpacing(10);

        CheckBox appleCheckBox = new CheckBox("Apple");
        CheckBox orangeCheckBox = new CheckBox("Orange");
        CheckBox bananaCheckBox = new CheckBox("Banana");
        
        orderMap = new TreeMap<>();
        orderMap.put(1, appleCheckBox);
        orderMap.put(2, orangeCheckBox);
        orderMap.put(3, bananaCheckBox);

        Button orderButton = new Button("Make Order");
        orderButton.setOnAction(e -> getOrder() );

        vBox.getChildren().addAll(
            appleCheckBox,
            orangeCheckBox,
            bananaCheckBox,
            orderButton);

        Scene scene = new Scene(vBox, 400, 300);

        window.setScene(scene);
        window.setTitle(this.getClass().getSimpleName());
        window.show();
    }

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

代码说明

这段代码创建了三个 CheckBox 代表三种可选水果,并将其放到一个 Map 中,这样做的目的是可以为每一个可选水果进行编号。

当点击按钮后,通过 checkBox.isSelected() 判断 CheckBox 的选中状态,从而收集当前选择的水果。

总结

  • 使用 CheckBox 可以轻松获取用户的选择
  • 通过将 CheckBox 放入 Map 中,我们可以对 CheckBox 进行编号