首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检测双击JavaFx中的ComboBox (TableCell组合框)?

在JavaFX中,要检测ComboBox(TableCell组合框)的双击事件,可以通过以下步骤实现:

  1. 创建一个自定义的TableCell类,继承自TableCell,并重写updateItem方法。在updateItem方法中,设置双击事件的处理逻辑。
代码语言:txt
复制
import javafx.scene.control.TableCell;
import javafx.scene.control.ComboBox;
import javafx.scene.input.MouseEvent;

public class DoubleClickComboBoxTableCell<S, T> extends TableCell<S, T> {
    private ComboBox<T> comboBox;

    public DoubleClickComboBoxTableCell() {
        setOnMouseClicked((MouseEvent event) -> {
            if (event.getClickCount() == 2 && !isEmpty()) {
                startEdit();
                comboBox.show();
            }
        });
    }

    @Override
    protected void updateItem(T item, boolean empty) {
        super.updateItem(item, empty);

        if (empty) {
            setText(null);
            setGraphic(null);
        } else {
            if (isEditing()) {
                if (comboBox != null) {
                    comboBox.setValue(item);
                }
                setText(null);
                setGraphic(comboBox);
            } else {
                setText(item.toString());
                setGraphic(null);
            }
        }
    }

    @Override
    public void startEdit() {
        super.startEdit();

        if (comboBox == null) {
            createComboBox();
        }

        comboBox.setValue(getItem());
        setText(null);
        setGraphic(comboBox);
    }

    @Override
    public void cancelEdit() {
        super.cancelEdit();

        setText(getItem().toString());
        setGraphic(null);
    }

    private void createComboBox() {
        comboBox = new ComboBox<>();
        comboBox.getItems().addAll(/* 添加ComboBox的选项 */);
        comboBox.setOnAction((event) -> {
            commitEdit(comboBox.getValue());
        });
    }
}
  1. 在TableView中使用自定义的TableCell类。假设有一个名为Person的类,其中有一个属性为gender,可以使用DoubleComboBoxTableCell来编辑gender属性。
代码语言:txt
复制
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;

public class Main extends Application {
    private TableView<Person> tableView = new TableView<>();
    private ObservableList<Person> data = FXCollections.observableArrayList(
            new Person("John", "Male"),
            new Person("Jane", "Female")
    );

    @Override
    public void start(Stage primaryStage) {
        TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());

        TableColumn<Person, String> genderColumn = new TableColumn<>("Gender");
        genderColumn.setCellValueFactory(cellData -> cellData.getValue().genderProperty());
        genderColumn.setCellFactory(column -> new DoubleClickComboBoxTableCell<>());

        tableView.getColumns().addAll(nameColumn, genderColumn);
        tableView.setItems(data);

        primaryStage.setScene(new Scene(tableView, 300, 200));
        primaryStage.show();
    }

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

在上述代码中,我们创建了一个TableView,并添加了两列,其中gender列使用了自定义的TableCell类DoubleComboBoxTableCell。双击gender单元格时,会弹出一个ComboBox供选择。

这是一个简单的示例,你可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

1-3 Winform 中的常用控件(3

8.案例学习:使用组合框控件 本次实验目标是在FORM窗体上建立一个列表框控件,两个组合框控件以及一个文本框控件,通过这些控件彼此之间的关联,学习并掌握ComboBox组合框控件的主要属性和方法。...图1-15 ComboBox组合框控件实现目标界面 根据图1-15所示,在窗体初始化时候加载部门信息到列表框和组合框内,上下组合框的DropDownStyle属性不同,上面为DropDown类型,下面为...当选择上面组合框中的具体工作部门,选中信息将分别呈现在文本框,列表框和下面的列表框之中。...图1-16 ComboBox组合框控件DropDownStyle属性的三种状态 u 实验步骤(2): 用鼠标双击窗体界面,进入.cs文件编辑状态准备进行开发。..."产品部"             this.listBox1.SelectedIndex = 1;             //请读者注意学习comboBox,listBox控件如何定位值

2.4K10
  • 串口助手(简洁版)上位机软件零基础教程( C# + visual studio2017 )(二)

    我们到上一章编好的可视化窗体中,去双击窗体的空白处,就跳转到对应的事件发生程序中去了。...ArryPort.Length; i++) { MycomboBox.Items.Add(ArryPort[i]); //将所有的可用串口号添加到 端口 对应的组合框中...(), 来更新一下 “端口” 组合框下拉菜单中的串口信息。...3.打开串口后,串口开关按键的颜色和文字就已经在程序中被修改了,而且还让两个组合框发灰,变成不可操作状态 4.发送按钮按下事件(程序) 当按下串口发送按键后,就需要将发送文本框中的数据通过串口发出。...ArryPort.Length; i++) { MycomboBox.Items.Add(ArryPort[i]); //将所有的可用串口号添加到 端口 对应的组合框中

    3.7K10

    VBA代码分享:可搜索的数据验证+组合框

    在mrexcel.com中,提供的可搜索的数据验证+组合框就是解决这个问题的一种方法,它有以下行为: 1.组合框可以通过某些操作显示和隐藏,例如双击单元格。...2.可以在组合框中键入一些关键字,键入时列表将随着键入的值而缩小。 3.对于所有具有数据验证的单元格,只需要一个组合框。...可以到知识星球完美Excel社群下载带有代码和详细说明的示例工作簿(ComboBox+DataValidate1.xlsm)。...效果演示如下图1: 图1 工作原理: - 在蓝色区域(列B,D,E)中的单元格具有数据有效性 - 双击蓝色区域中的单元格将激活组合框 - 输入关键字搜索,通过空格分隔,例如"fca" - 随着输入,显示的结果会减少...键或ESC键 - 列表中的数字值将视为文本 这是一段通用代码,你可以按照示例工作簿中的说明将代码复制到你想要应用的工作簿中。

    1.5K20

    初识Windows程序

    window 操作系统中,处处是窗体 简单 强大 方便 灵活 步骤 新建项目  项目类型 visual C#项目 模板 window应用程序 用partial 将同一个窗体的代码分开放在两个文件中: 一个存放在...vs自动生成的代码中 冒号表示继承 像孩子继承父母的特征所有窗体都继承Form 窗体标题 : Name 窗体图标: Icon 图片背景Backgroundimage 背景颜色 backcolor 最大化按钮...TextBox   txt 组合框   ComboBox  Cbo 按钮   Button   btn 规范化命名可以提高程序的可读性和可维护性 标签label image:标签上的图像 text:显示的文本...组合框ComboBox Items:组合框中的项 DropDownStyle:组合框的风格 Text:组合框关联的文本 SelectedIndex:当前选中项的索引,从0开始 selectedItem...我们需要做的 针对相关事件,编写相应的事件处理程序 编写事件处理程序的步骤 选中控件  在属性窗口中单击  找到事件  双击生成事件处理方法 编写处理代码 若事件事件处理方法未触发,请检查属性窗口中事件处理程序是否设置正确

    4.3K40

    VB基础:掌握listbox和combobox控件的应用【VB学习笔记2020课堂版04】

    简介 INTRODUCTIONlistbox列表框控件和combobox组合框控件的用法类似,只是界面风格不同。 ?...课题04 列表框和自动输入框的综合使用 授课:刘金玉 回顾知识,符合以下要求任务练习学生管理功能模块: 1.界面制作 2.功能开发 课程目标:VB基础:掌握listbox和combobox控件的应用...理解:listbox列表框控件和combobox组合框控件的用法类似,只是界面风格不同。...使用方法:val(字符串) 将返回一个数值类型的数据 val详解:从字符串的左侧开始检测是否是数字,直到检测到非数字位置,将检测到的数字转为数值。...获取listbox列表框控件的项数:listcount方法 通过索引获取列表框中指定项的文本:list(索引) 方法 案例:遍历列表框中的所有项目 Dim i% For i = 0 To List1.ListCount

    2.1K10

    软件测试|超好用超简单的Python GUI库——tkinter(十)

    前言上文我们介绍了tkinter的列表框处理,我们在日常生活中还会遇到组合框的情况,tkinter同样可以实现这个功能,下面我们来介绍一下tkinter如何实现组合框。...但在有些情况下,比如列表的项目过多时,若使用列表控件,列出所有选项就会显得界面格外臃肿,这时就需要用到 Combobox 控件,也就是下拉菜单控件(或称复合框),该控件是列表控件的改进版,具有更加灵活的界面...注:Combobox 并不包含在 tkinter 模块中,而是包含在tkinter.ttk子模块中,因此若想使用 Combobox 控件,需要使用下面的导包方式:from tkinter import...下面通过一组简单的示例进一步了解 Combobox 控件,示例代码如下:import tkinterfrom tkinter import ttk # 导入ttk模块,下拉菜单控件位于ttk子模块中#...总结本文主要介绍了tkinter组合框的实现,组合框的使用比列表框更为多见,更为方便,希望能够帮助到大家,后续我们将介绍tkinter的单选框多选框如何实现。

    1.2K10

    基于STM32单片机设计的红外测温仪(带人脸检测)

    比如: 金山办公旗下的-WPS,字节跳动旗下的-剪映,暴雪娱乐公司旗下-多款游戏登录器等等。Qt在车联网领域用的也非常多,比如,哈佛,特斯拉,比亚迪等等很多车的中控屏整个系统都是采用Qt设计。...如果没有连接STM32设备,那么默认会显示一个正常的固定温度值。界面上右边红色的字,表示当前处理一帧图像的耗时时间,电脑性能越好,检测速度越快。 (4) 拿到可执行文件之后如何运行?...然后双击“FaceTemperatureCheck.exe”运行程序。 未连接设备,也可以打开摄像头检测人脸,只不过温度值是一个固定的正常温度值范围。...参数3:用来存储检测到的候选目标的内存缓存区域。 参数4:表示在前后两次相继的扫描中,搜索窗口的比例系数。...如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,这种设定值一般用在用户自定义对检测结果的组合程序上。

    1.6K20

    1-3 Winform 中的常用控件(

    1-3 Winform 中的常用控件 u 本节学习目标: n System.Windows.Forms.Control基本结构 n 使用基本控件如标签、文本、按钮、列表框和组合框 n 掌握窗体的常用属性和方法...案例学习:建立第一个winForm应用——员工信息录入功能 本次实验目标是快速建立如图1-8的员工信息录入窗体,通过该案例使读者快速掌握Winform 中的常用控件包括:标签控件,文本框控件,按钮控件和组合框...将文本框,列表框和组合框的Enabled属性设置为False,即设置这些控件为不可用状态。 ?...图1-10 配置列表框和组合框的Items属性 u 实验步骤(3): 用鼠标双击“添加”按钮,进入.cs文件编辑状态准备进行开发。....Enabled = true;//设置所有代码为可用状态;             comboBox1.SelectedIndex = 0;//设置组合框控件默认为第一个             textBox1

    2.8K10

    JavaFX 11发行说明

    新功能 以下注释描述了JavaFX 11中的一些增强功能。有关完整列表,请参阅发行说明末尾的表格。...中不可编辑的ComboBox上的NPE 控制 JDK-8187432 ListView:启动时EditEvent的索引不正确 控制 JDK-8192800 表自动调整大小会忽略列调整大小策略 控制 JDK...JDK-8197846 ComboBox:删除并重新添加后变为无法点击 控制 JDK-8197985 在ListView中按Shift + DOWN会导致抛出异常 控制 JDK-8200285 TabDragPolicy.REORDER...中的版本号是错误的 其他 JDK-8195799 在javafx模块中使用系统记录器而不是平台记录器 其他 JDK-8195800 消除对javafx模块中sun.reflect.misc的依赖 其他...其他 JDK-8180151 JavaFX错误地使用具有特定尺寸的两个3D框渲染场景图 场景图 JDK-8192056 从组或容器中删除javafx.scene.shape.Sphere-objects

    6.7K60

    Easyui datagrid combobox输入框非法输入判断与事件总结

    输入框的值改变时触发事件 单选Combobox 针对单选Combobox 1、点选 通过点选下拉列表中可选项,并自动收起下拉列表 如果选取项和当前输入框的值不一样,会先后触发事件:onSelect ->...onChange -> onHidePanel; 如果选取项和当前输入框的值一样,仅会触发事件:onHidePanel 2、输入 通过在Combobox输入框中手动输入数据 如果停止输入后的数据和输入前的值不一样...if (rowsSelected == undefined) { // 表明是手动输入的值 // 循环遍历下拉列表框的选项,判断输入值是否存在选项中...if_found) { $(this).combobox('clear'); // clear none 清除组合框(combobox)的值。...附:我早些前的做法,如下,获取输入框的值,然后遍历逗号分隔的每项是否在下拉列表中,是的话停止遍历,进行下一个项的检测,只要有一项不符则判断为非法输入。

    3.5K30

    基于 HTML5 的 3D 工业互联网展示方案

    '// 填满父容器 }); 对于“货位统计表格”,我们采用的是 HT 封装的 TreeTableView 组件,以树和表格的组合方式呈现 DataModel 中数据元素属性及父子关系,并将这个“树表”...这个 header 是从 src/view 下的 header.js 中获取的对象,为 ht.ui.RelativeLayout 相对定位布局器,分为 5 个部分:searchField 搜索框、titleLabel...主要讲一下如何加载这个“货物”的 obj,我们在 G.js 文件中有定义一个 loadObj 函数,我们在代码顶部也有引入,导入 obj 文件之后就在“货物”的库存增加这个“货物”: for (let...“归类”和“模型”类似,都是下拉框,我们用 HT 封装的 ht.ui.ComboBox 组合框组件,跟 ht.ui.TextField 也是异曲同工,只是具体操作不同而已,HT 这样做使用上更简便更容易上手...);// 设置预览背景;可以是颜色或者图片等 comboBox.getInput().style.visibility = 'visible';// 获取组件内部的 input 框的 style 样式

    2.7K20

    基于 HTML5 WebGL 的 3D 仓储管理系统

    '//填满父容器 }); 对于“货位统计表格”,我们采用的是 HT 封装的 TreeTableView 组件,以树和表格的组合方式呈现 DataModel 中数据元素属性及父子关系,并将这个“树表”添加进垂直列...vBoxLayout 中: let shelfTreeTable = new ht.ui.TreeTableView();//树表组件,以树和表格的组合方式呈现 DataModel 中数据元素属性及父子关系...主要讲一下如何加载这个“货物”的 obj,我们在 G.js 文件中有定义一个 loadObj 函数,我们在代码顶部也有引入,导入 obj 文件之后就在“货物”的库存增加这个“货物”: for (let...“归类”和“模型”类似,都是下拉框,我们用 HT 封装的 ht.ui.ComboBox 组合框组件,跟 ht.ui.TextField 也是异曲同工,只是具体操作不同而已,HT 这样做使用上更简便更容易上手...);//设置预览背景;可以是颜色或者图片等 comboBox.getInput().style.visibility = 'visible';//获取组件内部的 input 框的 style 样式 comboBox.setReadOnly

    3.6K30

    第68篇:javafx编写扫描器UI界面的线程死锁问题及坑点总结

    在编写这个扫描工具过程中,踩了一大堆坑,接下来把解决方法分享给大家。...2 javafx控件修改值过程测试 接下来再添加一行修改javafx控件文本框的代码:Quanjv.textarea.setText("test");,发现在100个线程操作下程序立马报错。...对于jdk8下的javafx的编译,很简单,直接编译成一个jar包就可以在jdk8上双击运行,因为jdk是自带javafx库的,但是对于更高版本的jdk,比如说jdk11或者jdk17,默认是不带javafx...首先使用idea 2022新建项目,JDK选择大于等于jdk8的版本即可,小于jdk8不支持javafx。 可以看到idea 2022版本,已经自动在pom.xml文件中添加了javafx库了。...接下来是最重要的一个步骤,我们需要新建一个主类,按照如下格式编写: 接下来需要设置如何去编译jar包文件,主类需要选择我们新建的JavaFXBootstrap类,记住一定要删掉main\resources

    37531

    基于 HTML5 WebGL 的 3D 仓储管理系统

    '//填满父容器 }); 对于“货位统计表格”,我们采用的是 HT 封装的 TreeTableView 组件,以树和表格的组合方式呈现 DataModel 中数据元素属性及父子关系,并将这个“树表”添加进垂直列...vBoxLayout 中: let shelfTreeTable = new ht.ui.TreeTableView();//树表组件,以树和表格的组合方式呈现 DataModel 中数据元素属性及父子关系...主要讲一下如何加载这个“货物”的 obj,我们在 G.js 文件中有定义一个 loadObj 函数,我们在代码顶部也有引入,导入 obj 文件之后就在“货物”的库存增加这个“货物”: for (let...“归类”和“模型”类似,都是下拉框,我们用 HT 封装的 ht.ui.ComboBox 组合框组件,跟 ht.ui.TextField 也是异曲同工,只是具体操作不同而已,HT 这样做使用上更简便更容易上手...);//设置预览背景;可以是颜色或者图片等 comboBox.getInput().style.visibility = 'visible';//获取组件内部的 input 框的 style 样式 comboBox.setReadOnly

    3.6K51

    VB.NET数据库编程基础教程

    (3)生成数据集类: 点击“数据→生成数据集”菜单命令,此时将出现“生成数据库”对话框。在“新建”框中myDataSet作为要创建的新数据集的名称。确保选中“将此数据集添加到设计器”选项。...在“解决方案资源管理器”窗口中,右击项目名称,从快捷菜单中选择“属性”命令,在打开的对话框中点击“启动对象”组合框并从列表中选择“frmtest”选项。然后点击“确定”按钮。...(2)打开组合框并将各个文本框绑定到相应的字段。...程序运行后,点击“TextBox数据绑定”按纽,程序就会用myDataSet中“student”中的数据来自动填充文本框。...1.实现对数据记录的浏览 在完成对窗体中的WinForm组件进行绑定后,实现对数据记录的浏览操作的关键就是要找到如何定位数据记录指针的方法。

    4.7K30

    C++ Qt开发:ComboBox下拉组合框组件

    下拉组合框组件的常用方法及灵活运用。...在Qt中,ComboBox(组合框)是一种常用的用户界面控件,它提供了一个下拉列表,允许用户从预定义的选项中选择一个。...上述这些方法提供了对ComboBox进行配置、管理和与之交互的灵活性。你可以根据具体的应用需求使用这些方法,使ComboBox在你的Qt应用程序中按照期望的方式工作。...如下图所示,我们分别增加三个ComboBox组件,其中前两个组件是默认的,最后一个是Font ComboBox字体选择框,其实该选择框也是标准选择框的模板,只不过其默认为我们初始化了系统字体方便选择而已但在使用上与...通常情况下使用ComboBox组件与前几章中所示案例保持一致,只需要通过ui->comboBox_Main->调用不同的属性即可实现赋值或取值,此处我们来演示一个更复杂的需求,实现选择组件的联动效果,即用户选择主选择框时自动列出该主选择框的子项

    1.9K10

    C++ Qt开发:ComboBox下拉组合框组件

    下拉组合框组件的常用方法及灵活运用。...在Qt中,ComboBox(组合框)是一种常用的用户界面控件,它提供了一个下拉列表,允许用户从预定义的选项中选择一个。...上述这些方法提供了对ComboBox进行配置、管理和与之交互的灵活性。你可以根据具体的应用需求使用这些方法,使ComboBox在你的Qt应用程序中按照期望的方式工作。...如下图所示,我们分别增加三个ComboBox组件,其中前两个组件是默认的,最后一个是Font ComboBox字体选择框,其实该选择框也是标准选择框的模板,只不过其默认为我们初始化了系统字体方便选择而已但在使用上与...通常情况下使用ComboBox组件与前几章中所示案例保持一致,只需要通过ui->comboBox_Main->调用不同的属性即可实现赋值或取值,此处我们来演示一个更复杂的需求,实现选择组件的联动效果,即用户选择主选择框时自动列出该主选择框的子项

    87910

    Java FX制作小游戏

    Java FX制作小游戏在全栈学习Java中,了解如何使用Java FX创建图形化界面是很重要的一步。本篇文章将向您展示如何使用Java FX制作一个简单的小游戏。...Stage:Stage表示JavaFX应用程序的主舞台,是JavaFX中顶级容器的实例。通过Stage类,可以设置应用程序的标题、尺寸、图标等属性,并将场景(Scene)设置为舞台的内容。...Control:Control是JavaFX中的控件类,用于构建用户界面上的可交互组件。常见的控件包括Button、Label、TextField、ComboBox、ListView等。...JavaFX中的事件可以是鼠标事件、键盘事件、焦点事件、动画事件等。Animation:Animation类和相关类用于实现动画效果。...总结通过这篇文章,我们学习了如何使用Java FX创建一个简单的小游戏。我们了解了如何创建游戏窗口、处理用户输入以及显示游戏元素。

    43210
    领券