JavaFX 下拉框

组合框允许用户选择几个选项之一。用户可以滚动到下拉列表。组合框可以是可编辑和不可编辑的。

创建组合框

以下代码将选项列表包装到ObservableList中,然后使用observable列表实例化ComboBox类。

ObservableList<String> options = FXCollections.observableArrayList("1","2","3"
);
ComboBox comboBox = new ComboBox(options);

我们还可以使用空构造函数创建一个组合框,并调用其setItems方法设置数据。

ComboBox comboBox = new ComboBox(options);
comboBox.setItems(options);

向具有新值的项目的组合框中添加更多项目。

comboBox.getItems().addAll("4","5","6"
);

setValue 方法设置在组合框中选择的项目。在调用setValue方法时,即使值不在组合框项目列表中,selectionModel属性的选定项也会更改为此值。

getValue方法返回所选的值。

要限制下拉列表中可见行的数量,请使用以下代码。

comboBox.setVisibleRowCount(3) 

可编辑的组合框

setEditable(true)方法使组合框可编辑。使用setPromptText方法,当不执行选择时,我们可以指定显示在组合框编辑区域中的文本。

ComboBox myComboBox = new ComboBox();
myComboBox.getItems().addAll("s@example.com","i@example.com","e@example.com","m@example.com"  
);
myComboBox.setPromptText("Email address");
myComboBox.setEditable(true);        
myComboBox.setOnAction((Event ev) -> {address =  myComboBox.getSelectionModel().getSelectedItem().toString();    
});
myComboBox.setValue("s@example.com"); 

以下代码创建一个简单的可编辑组合框

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group(), 450, 250);ComboBox<String> myComboBox = new ComboBox<String>();myComboBox.getItems().addAll("A","B","C","D","E");myComboBox.setEditable(true);        Group root = (Group) scene.getRoot();root.getChildren().add(myComboBox);stage.setScene(scene);stage.show();}
}

组合框单元格

我们可以使用单元格工厂来改变组合框的默认行为或外观。

以下代码创建一个单元格工厂,并将其应用到组合框。

单元格工厂生成ListCell对象。 每个单元格与一个组合框项目相关联。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.util.Callback;public class Main extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group(), 200, 200);ComboBox<String> myComboBox = new ComboBox<String>();myComboBox.getItems().addAll("A", "B", "C", "D", "E");myComboBox.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {@Overridepublic ListCell<String> call(ListView<String> param) {final ListCell<String> cell = new ListCell<String>() {{super.setPrefWidth(100);}@Overridepublic void updateItem(String item, boolean empty) {super.updateItem(item, empty);if (item != null) {setText(item);if (item.contains("A")) {setTextFill(Color.RED);} else if (item.contains("B")) {setTextFill(Color.GREEN);} else {setTextFill(Color.BLACK);}} else {setText(null);}}};return cell;}});Group root = (Group) scene.getRoot();root.getChildren().add(myComboBox);stage.setScene(scene);stage.show();}
}

例1

将值设置为null以清除ComboBox

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group(), 450, 250);ComboBox<String> myComboBox = new ComboBox<String>();myComboBox.getItems().addAll("A","B","C","D","E");myComboBox.setValue("A");System.out.println(myComboBox.getValue());myComboBox.setValue(null);Group root = (Group) scene.getRoot();root.getChildren().add(myComboBox);stage.setScene(scene);stage.show();}
}

例2

设置和获取ComboBox的值

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group(), 450, 250);ComboBox<String> myComboBox = new ComboBox<String>();myComboBox.getItems().addAll("A","B","C","D","E");myComboBox.setValue("A");System.out.println(myComboBox.getValue());Group root = (Group) scene.getRoot();root.getChildren().add(myComboBox);stage.setScene(scene);stage.show();}
}

例3

将更改监听器添加到ComboBox valueProperty

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group(), 450, 250);ComboBox<String> myComboBox = new ComboBox<String>();myComboBox.getItems().addAll("A","B","C","D","E");myComboBox.setValue("A");System.out.println(myComboBox.getValue());myComboBox.valueProperty().addListener(new ChangeListener<String>() {@Override public void changed(ObservableValue ov, String t, String t1) {System.out.println(ov);System.out.println(t);System.out.println(t1);}    });Group root = (Group) scene.getRoot();root.getChildren().add(myComboBox);stage.setScene(scene);stage.show();}
}

例4

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group(), 450, 250);ComboBox<String> myComboBox = new ComboBox<String>();myComboBox.getItems().addAll("A","B","C","D","E");myComboBox.setEditable(true);myComboBox.setPromptText("Email address");Group root = (Group) scene.getRoot();root.getChildren().add(myComboBox);stage.setScene(scene);stage.show();}
}

例5

在ComboBox中显示矩形

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(final Stage primaryStage) {Group root = new Group();Scene scene = new Scene(root, 400, 300, Color.WHITE);GridPane gridpane = new GridPane();ComboBox<Rectangle> cmb = new ComboBox<Rectangle>();cmb.getItems().addAll(new Rectangle(10, 10, Color.RED), new Rectangle(10, 10, Color.GREEN), new Rectangle(10, 10, Color.BLUE));gridpane.add(cmb, 2, 0);root.getChildren().add(gridpane);   primaryStage.setScene(scene);primaryStage.show();}}

例6

以下代码显示了如何使用CellFactory显示组合框值。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Callback;public class Main extends Application {public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(final Stage primaryStage) {Group root = new Group();Scene scene = new Scene(root, 400, 300, Color.WHITE);GridPane gridpane = new GridPane();ComboBox<Color> cmb = new ComboBox<Color>();cmb.getItems().addAll(Color.RED, Color.GREEN, Color.BLUE);cmb.setCellFactory(new Callback<ListView<Color>, ListCell<Color>>() {@Overridepublic ListCell<Color> call(ListView<Color> p) {return new ListCell<Color>() {private final Rectangle rectangle;{setContentDisplay(ContentDisplay.GRAPHIC_ONLY);rectangle = new Rectangle(10, 10);}@Overrideprotected void updateItem(Color item, boolean empty) {super.updateItem(item, empty);if (item == null || empty) {setGraphic(null);} else {rectangle.setFill(item);setGraphic(rectangle);}}};}});gridpane.add(cmb, 2, 0);root.getChildren().add(gridpane);primaryStage.setScene(scene);primaryStage.show();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习课程复习——朴素贝叶斯

1. 定义 是一种基于贝叶斯定理与特征条件独立假设的生成式分类方法。 2. 公式 原版公式 简化版公式 由于上述公式无法计算&#xff0c;引入条件独立假设 条件独立版公式 3. 贝叶斯分类器 由上述公式可得贝叶斯分类器 化简为 4. 参数估计 4.1. 极大似然估计 4.2. 学习与分…

【规格说明】软件需求规格说明书实际项目案例模板(doc原件套用)

1 范围 1.1 系统概述 1.2 文档概述 1.3 术语及缩略语 2 引用文档 3 需求 3.1 要求的状态和方式 3.2 系统能力需求 3.3 系统外部接口需求 3.3.1 管理接口 3.3.2 业务接口 3.4 系统内部接口需求 3.5 系统内部数据需求 3.6 适应性需求 3.7 安全性需求 3.8 保密性需求 3.9 环境需求…

【Nginx系列】反向代理在现代网络架构中的重要性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C# 利用XejeN框架源码,编写一个在 Winform 界面上的语法高亮的编辑器,使用 Monaco 编辑器

析锦基于Monaco技术实现的Winform语法高亮编辑器 winform中&#xff0c;我们有时需要高亮显示基于某种语言的语法编辑器。 目前比较强大且UI现代化的&#xff0c;无疑是宇宙最强IDE的兄弟&#xff1a;VS Code。 类似 VS Code 的体验&#xff0c;可以考虑使用 Monaco Editor&a…

vue3-父子通信

一个简单的vue3子组件调用父组件方法的demo <template> <div> <h2>Parent Component父组件</h2> <ChildComponent notify-parent"handleParentMethod" /> </div> </template> <script> import { ref } fr…

LVGL开发教程-objects对象

知不足而奋进 望远山而前行 目录 知不足而奋进 望远山而前行​ 文章目录 前言 1.图层 2.objects 2.1 位置 2.2 尺寸 2.3 align 2.4 样式 总结 前言 在嵌入式 GUI 开发中&#xff0c;LVGL&#xff08;Light and Versatile Graphics Library&#xff09;是一个强大的工…

电脑丢失dll文件一键修复的方法有哪些?分析dll文件修复的多种策略

我们经常会遇到各种各样的问题&#xff0c;其中之一就是DLL文件的丢失。DLL文件&#xff08;动态链接库&#xff09;是操作系统和应用程序正常运行所必需的文件&#xff0c;当这些文件丢失或损坏时&#xff0c;可能会导致软件无法正常启动&#xff0c;甚至影响系统的稳定性。对…

SpringMVC系列二: 请求方式介绍

RequestMapping &#x1f49e;基本使用&#x1f49e;RequestMapping注解其它使用方式可以修饰类和方法可以指定请求方式可以指定params和headers支持简单表达式支持Ant 风格资源地址配合PathVariable 映射 URL 绑定的占位符注意事项和使用细节课后作业 上一讲, 我们学习的是Spr…

植物大战僵尸杂交版2024最新手机版下载!功能全面升级,战斗更刺激!

植物大战僵尸杂交版2024——让游戏更加有趣&#xff01; 嘿&#xff0c;各位游戏爱好者们&#xff01;&#x1f31f;今天我要给你们介绍的是一个全新版本的植物大战僵尸——植物大战僵尸杂交版2024。这款游戏不仅保留了原版的经典元素&#xff0c;还增加了许多新的特性和玩法&a…

操作系统 大作业

1、现有成绩文件按“姓名 学校 年级 班级 分数”五列组成&#xff0c;编写Shell脚本&#xff0c;将某目录下所有成绩文件&#xff08;≥3个&#xff09;合并为一个&#xff0c;形成“姓名 班级 分数”三列&#xff0c;并按成绩排序&#xff0c;输出年级排名前十。同时输出60以下…

实现一个渐进优化的 Linux cp 命令

1&#xff0c;第1版 copy 先写个轮廓 selfcp.c &#xff1a; #include <stdio.h>int main() {FILE *source, *destination;char ch;source fopen("H222.txt", "r");if (source NULL) {printf("Error opening source file!\n");retur…

8.华为两台交换机的三种连接方式access 、trunk、undo portswitch

目的&#xff1a;两台三层交换机的三种连接方式 1.access 2.trunk 3.undo portswitch 模拟机不支持此配置&#xff0c;实体机支持 第一种access CE1配置 [~HUAWEI]vlan batch 10 [~HUAWEI]int Vlanif 10 [~HUAWEI-Vlanif10]ip add 10.10.10.1 24 [~HUAWEI]int g1/0/0 [~HUAWE…

卫士通电科网安安全IpSec网关Ukey开发对接

官方公开的开发文档&#xff0c;有几个坑&#xff0c;着重说一下踩坑的记录过程。 1、通过官方的客户端接口模拟程序获取前端参数&#xff1a;随机数和token 2、java程序调用官方sdk&#xff0c;postman请求测试&#xff1a; 3、贴出关键的java集成类&#xff1a; import cn.h…

shell脚本 函数

函数 shell的函数 定义&#xff1a;将命令序列按照格式写在一起。格式指的是函数的固定格式。两种格式。 for i in {} do 命令序列 done if [ ] then 命令序列 fi 作用&#xff1a;方便重复使用。函数库&#xff0c;集中在一起&#xff0c;随时可以传参调用。大的工…

SpringMVC系列五: SpringMVC映射请求数据

SpringMVC映射请求数据 &#x1f49e;获取参数值说明应用实例 &#x1f49e;获取http请求消息头&#x1f49e;获取JavaBean对象使用场景说明应用实例注意事项和细节 &#x1f49e;获取servlet api说明应用实例注意事项和细节 上一讲, 我们学习的是SpringMVC系列四: Rest-优雅的…

VUE 项目用 Docker+Nginx进行打包部署

一、Docker Docker 是一个容器化平台&#xff0c;允许你将应用程序及其依赖项打包在容器中。使用 Docker&#xff0c;你可以创建一个包含 Vue.js 应用程序的容器镜像&#xff0c;并在任何支持 Docker 的环境中运行该镜像。 二、Nginx Nginx 是一个高性能的 HTTP 服务器和反向…

Eureka 学习笔记(1)

一 、contextInitialized() eureka-core里面&#xff0c;监听器的执行初始化的方法&#xff0c;是contextInitialized()方法&#xff0c;这个方法就是整个eureka-server启动初始化的一个入口。 Overridepublic void contextInitialized(ServletContextEvent event) {try {init…

无声短视频:成都柏煜文化传媒有限公司

无声短视频&#xff1a;视觉艺术的独特魅力 在数字化时代的浪潮中&#xff0c;短视频以其简短、直观、易于传播的特点迅速崛起&#xff0c;成为当下最热门的媒体形式之一。而在众多的短视频类型中&#xff0c;无声短视频以其独特的视觉表达方式&#xff0c;逐渐吸引了越来越多…

Intelij IDEA中Mapper.xml无法构建到资源目录的问题

问题场景&#xff1a; 在尝试把原本在eclipse上的Java Web项目转移至Intelij idea上时&#xff0c;在配置文件均与eclipse一致的情况下出现了如下报错&#xff1a; org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.umbrella.crm_core.…

leetcode118 杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRows 1 输出: [[1]] public List…