📜  JavaFX |带有示例的组合框(1)

📅  最后修改于: 2023-12-03 15:16:03.463000             🧑  作者: Mango

JavaFX | 带有示例的组合框

简介

JavaFX中的ComboBox是一个前端控件,它允许用户从一个下拉列表中选择一个或多个选项。ComboBox可以包含文本和图像,并且可以自定义其外观。ComboBox很常用,它经常出现在GUI应用程序中的用户交互界面中。

使用示例

以下是一个JavaFX程序,演示如何创建和使用ComboBox控件:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ComboBoxExample extends Application {
    
    @Override
    public void start(Stage stage) {
        ComboBox<String> comboBox = new ComboBox<>();
        comboBox.getItems().addAll("Java", "Python", "C++", "JavaScript", "HTML", "CSS");
        comboBox.setPromptText("Select your favourite programming language");

        VBox root = new VBox(comboBox);
        Scene scene = new Scene(root, 300, 200);

        stage.setTitle("JavaFX ComboBox Example");
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String[] args) {
        launch(args);
    }

}

该示例创建了一个ComboBox,添加了一些项目,然后将其添加到一个VBox容器中。接下来,创建了一个场景,将该容器添加到场景中,最后将场景设置到舞台上。

运行该程序,将显示一个下拉列表,显示所有项的默认文本,并且允许用户选择其中一项:

ComboBox Example

控件事件

ComboBox提供了一些事件来处理用户与控件交互的情况。以下是一些常见的事件:

  • SelectionChanged:当用户选择一个新项时,将触发此事件。
  • OnShowing:当下拉列表正打开时,将触发此事件。
  • OnHiding:当下拉列表关闭时,将触发此事件。
  • OnAction:当用户选择一个项并单击时,将触发此事件。

以下示例演示了如何在ComboBox上使用SelectionChanged事件:

comboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
    System.out.println("Selected item: " + newValue);
});
自定义下拉列表项

可以将任何节点添加到ComboBox的下拉列表中,以自定义下拉列表项的外观和行为。以下代码示例演示如何使用单元格工厂创建自定义下拉列表项:

comboBox.setCellFactory(param -> new ListCell<String>() {
    {
        super.setPrefWidth(100);
    }

    @Override
    public void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        if (empty || item == null) {
            setText(null);
        } else {
            setText(item.toUpperCase());
        }
    }
});

comboBox.setButtonCell(comboBox.getCellFactory().call(null));

该代码将字母转换为大写,并将其设置为下拉列表项的文本。

总结

ComboBox是JavaFX中的一个非常有用的控件,它可以让用户很容易地从下拉列表中选择一个或多个项目。ComboBox还支持事件处理和自定义下拉列表项,使其非常灵活和易于使用。