JavaFX的同一个HBox下拖动下拉条左侧按钮乱跳动的问题?

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

 大神们,我现在有个这样的按钮列,如图:


然后多条数据的话右边会有个下拉条,如图:


但是现在就是拉动右边的下拉条,左边的按钮就会乱跳动乱掉,如图:


然后排查了下原因是因为每拉动一次下拉条的时候会调用一个updateItem()的方法,怎么样让这个下拉条拖动


的时候只回调一次这个updateItem()方法? 或者有其他办法改进这种BUG吗?急求!!!!!!!


部分代码如下:

public class AllRoomOperateButtonTableCell<S, T> extends TableCell<S, T> {


        private final HBox mHbox;
        private final  Button mViewBn;
        private final Button mViewPicBn;
        private ObservableValue<T> ov;
        private final ObservableList<RoomOperateRecordInfo> mTransList;
        private RoomOperateRecordInfo mTransInfo;
        private final TableView mTableView;


        public AllRoomOperateButtonTableCell(ObservableList<RoomOperateRecordInfo> transList,TableView tableView) {
            this.mTransList = transList;
            this.mTransInfo = null;
            this.mTableView = tableView;
            this.mHbox = new HBox();
            this.mHbox.setSpacing(5);
            this.mHbox.setAlignment(Pos.CENTER);
            
            this.mViewBn = ButtonBuilder.create()
                    .text("查看")
                    .prefWidth(60)
                    .prefHeight(30)
                    .build();
            this.mViewBn.setOnAction(new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent event) {
                    synchronized (mTransList) {
                    mTableView.getSelectionModel().select(getIndex());
                    mTransInfo = mTransList.get(getIndex());
                    if (mTransInfo.getStatus() == CHECK_TRANS_DONE + 10 || mTransInfo.getStatus() == CHECK_TRANS_CANCELLED + 10 || mTransInfo.getStatus() == CHECK_TRANS_SYSTEMCANCELLED + 10) {
                        CheckingRoomTransInfo checkInfo = new CheckingRoomTransInfo(mTransInfo.getTransId(), mTransInfo.getSubmitTime(), mTransInfo.getRoomNo(), mTransInfo.getCreatedByENo(), mTransInfo.getReadFlag(), mTransInfo.getStatus(), mTransInfo.getProcessTime(), mTransInfo.getComments(), mTransInfo.getProcessENo());
                        for(int i=0;i<mTransInfo.getmMinibarInfosList().size();i++){
                               checkInfo.addmMinibarInfosList(mTransInfo.getmMinibarInfosList().get(i));
                        }
                        showCheckTransDetail(checkInfo, null);
                    }else if (mTransInfo.getStatus() == CLEAN_TRANS_UNHANDLED || mTransInfo.getStatus() == CLEAN_TRANS_UNINSPECTED || mTransInfo.getStatus() == CLEAN_TRANS_INSPECTED || mTransInfo.getStatus() == CLEAN_TRANS_UNPASSED ||mTransInfo.getStatus() == CLEAN_TRANS_DELAYED ||mTransInfo.getStatus() == CLEAN_TRANS_CANCELLED || mTransInfo.getStatus() == CLEAN_TRANS_TIMEOUT) {
                        CleanTransInfo cleanInfo = new CleanTransInfo(mTransInfo.getTransId(), mTransInfo.getSubmitTime(), mTransInfo.getRoomNo(), mTransInfo.getCreatedByENo(), mTransInfo.getReadFlag(), mTransInfo.getStatus(), 2, mTransInfo.getProcessTime(), mTransInfo.getComments(), mTransInfo.getProcessENo());
                        showCleanTransDetail(cleanInfo, null);
                    }


                    mTableView.requestFocus();
                }
              }
            });
            
            this.mViewPicBn = ButtonBuilder.create()
                    .text("看图")
                    .prefWidth(60)
                    .prefHeight(30)
                    .build();
            this.mViewPicBn.setOnAction(new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent event) {
                    mTableView.getSelectionModel().select(getIndex());
                    mTransInfo = mTransList.get(getIndex());
                    showRelatedPicDetail(null,mTransInfo);
                    mTableView.requestFocus();
                }
            });


            mHbox.getChildren().addAll(mViewBn);
            setAlignment(Pos.CENTER);
            setGraphic(mHbox);
        }
         
        @Override
        public void updateItem(T item, boolean empty) {

            super.updateItem(item, empty);  
            if (empty) {
                setText(null);
                setGraphic(null);
            } else {
                setGraphic(mHbox);
                
                ov = getTableColumn().getCellObservableValue(getIndex());

                if (ov instanceof IntegerProperty) {
                    int status = ((IntegerProperty) ov).get();
                    if (status == CHECK_TRANS_DONE + 10 || status == CHECK_TRANS_CANCELLED + 10 || status == CHECK_TRANS_SYSTEMCANCELLED + 10
                            || status == CLEAN_TRANS_INSPECTED || status == CLEAN_TRANS_CANCELLED || status == CLEAN_TRANS_TIMEOUT) {
                        mViewBn.setText("查看");
                        mViewBn.setStyle("-fx-base: olivedrab;");
                    }else if (status == CHECK_STATUS_CHECKOUT || status == CHECK_TRANS_UNHANDLED + 100 || status == CHECK_TRANS_DONE + 100 || status == CHECK_TRANS_CANCELLED + 100
                            || status == CHECK_TRANS_SYSTEMCANCELLED + 100 || status == CLEAN_STATUS_CREATE || status == -CLEAN_TRANS_UNINSPECTED || status == -CLEAN_TRANS_INSPECTED
                            || status ==-CLEAN_TRANS_UNPASSED  ||status ==-CLEAN_TRANS_DELAYED  ||  status == -CLEAN_TRANS_CANCELLED || status == -CLEAN_TRANS_TIMEOUT || status == NOTIFY_LOG) {
                       setGraphic(null);
                       return;
                    } else {
                        mViewBn.setText("处理");
                        mViewBn.setStyle("-fx-base: orange;");
                    }
                }


                 if (mTransInfo == null) {
                        mTransInfo = mTransList.get(getIndex());
                        if (mTransInfo.IsChecking() != null && mTransInfo.IsChecking() != "" && mTransInfo.getRelatedPicList().size() > 0) {
                              mHbox.getChildren().add(0,mViewPicBn);

                        }
                }
            }
        }
    }

JavaFX实战:从零到一,构建你的第一个点击放置(Clicker/Idle)游戏 响应按钮点击。使用BorderPaneVBoxHBox构建结构化界面。利用Timeline实现优雅的后台自动收益。通过成员变量清晰地维护游戏数据。根据游戏状态实时更新标签内容和按钮可用性。增加减少升级成本、提高暴击几率/倍数、解锁新资源等的升级。引入第二种、第三种资源,升级需要消耗不同资源组合。达到特定目标(如点数、等级、点击次数)时解锁成就,提供额外奖励或永久加成。 阅读详情

相关推荐

JavaFx实现百度文本框的下拉提示功能

实现对文本框的匹配,比如已存在的匹配集合包含:“abc”、"aa"、"bb" 输入a时就会匹配到"abc"和"aa"

JavaFX 11在Windows、Linux或Mac上的安装与使用配置

转载:https://www.cjavapy.com/article/166/     本文主要介绍JavaFX 11在Linux系统或苹果mac系统上的安装与配置。 1、下载安装JavaFX 11 下载地址:https://gluonhq.com/products/javafx/ 安装文档:https://openjfx.io/openjfx-docs/#install-javafx...

thankyou2008_的专栏 1万+

JAVA下拉列表的使用方法(代码)

JAVA下拉列表的使用方法(原代码)及具体说明

JavaFX布局-HBox

容器边缘与其子节点之间的距离。设置额外的水平空间填充属性。

ceclar123的专栏 848

如何用java实现下拉菜单

如何用java实现下拉菜单

可扩展的list,下拉框框

可扩展的listview和view,很实用,集成了list和view,两种类型,方便使用,类似于spinner下拉框框。常用功能。

JavaFX 用户界面控件1——ChoiceBox ComboBox

在这个示例中,我们创建一个包含三个选项的ChoiceBox对象,并将其添加到一个垂直布局VBox中。最后,我们将布局添加到场景中,并显示舞台。在这个示例中,我们创建了一个包含三个选项的ComboBox对象,并将其添加到一个垂直布局VBox中。JavaFX的ComboBox是一个用户界面控件,它结合了文本框和下拉列表,可以向用户显示一组选项,并允许用户从中选择一个或多个选项。JavaFX的ChoiceBox是一个用户界面控件,用于向用户显示一个选项列表,并允许用户从中选择一个或多个选项。

kan_Feng的博客 4107

gem5 prefetcher

最近在gem5上做预取实验,添加自己的预取算法,这里采用hardware stream prefetcher , 修改了几个bug才给实验调试通过,发文记录下实验过程。 gem5上添加自己的预取算法步骤: (1)路径gem5-master/configs/common/Caches.py下,开启预取:class L1Cache(Cache): assoc = 2 tag_late

编程邦 3842

JavaFX.进阶操作

网格布局 将整个面板划分为若干个格子,每个格子的大小是一样的,每个格子中可以放置一个控件(布局),类似于表格的方式。在网格布局 中放入控件的时候,还需要指定位置。 我们将要排出这个布局,也就是登陆页面的优化版本 位置原理讲解 以网格布局的思维来拆分该布局,可以分出一个 2*3 的网格 GridPane gridPane = new GridPane();我们可以给格子从上到下,从左到右依次编号,分别是: 得出结论: 位置 a,b 其中 a 向右移动需要变大,向下移动则 b 需

m0_68693300的博客 933

IDEA集成selenium自动化测试(Java+Selenuim+testNG+Maven)

文章目录写在前面01 | 新建Maven项目02 | idea集成Selenium03 | 写在前面 因为软件测试的需求和博主比较经常使用Java,于是,想在Idea中集成selenuim,用Java编写测试代码,因此有了这篇文章来记录一下过程。 资源指路: java使用selenium实现模拟浏览器操作API大全 模拟登录 TestNG入门教程 感谢上面博客的大佬。 01 | 新建Maven项目 不使用骨架创建,直接点击左侧Maven,然后一路next即可。 02 | idea集成Sele

aLinxi的博客 8277

MC1496乘法器AM调制电路搭建全流程(附Multisim 14.0仿真文件)

本文提供了基于MC1496乘法器搭建AM调制电路的完整实战指南。针对仿真模型缺失的痛点,详细讲解了从晶体管级手动构建MC1496等效模型,到外围电路设计、调制度参数计算与调节,并在Multisim 14.0中进行仿真验证的全流程。通过深度剖析MC1496内部原理与AM信号调制机制,帮助读者获得从仿真到实践的可控设计与排错能力。

weixin_29190169的博客 589

JavaFX的同一个HBox下拖动下拉条左側button乱跳动的问题?

大神们,我如今有个这种button列。如图: 然后多条数据的话右边会有个下拉条。如图: 可是如今就是拉动右边的下拉条。左边的button就会乱跳动乱掉。如图: 然后排查了下原因是由于每拉动一次下拉条的时候会调用一个updateItem()的方法。怎么样让这个下拉条拖动 的时候仅仅回调一次这个updateItem()方法? 或者有其它办法改...

adr5970的博客 211

保姆级教程:在Ubuntu 20.04上从源码编译Apollo自动驾驶平台(含GPU环境配置)

本文提供了一份详细的Ubuntu 20.04上从源码编译Apollo自动驾驶平台的保姆级教程,包括GPU环境配置、Docker部署和编译构建等关键步骤。通过实战经验和避坑指南,帮助开发者高效完成Apollo平台的编译和验证,适用于自动驾驶技术研究和应用开发。

weixin_30876945的博客 404

java fx下拉框_javafx combobox下拉列表从屏幕边缘出来

我有java(8_40)和javaFX的最新版本.我有一个包含10个项目的复选框.我编译并运行该程序.如果我将程序窗口移动到监视器屏幕的底部,则下拉列表将从监视器屏幕中移出.无法单击屏幕上的项目.相反,如果我尝试使用场景构建器2.0执行相同的布局,请单击预览,下拉列表会自动向上移动以不退出屏幕.为什么要正确显示场景构建器,而不是“编译和运行”?问题是相同的,如果我通过代码做图形是如果我使用文件fx...

weixin_35817939的博客 1028

语音识别:PyAudio、SoundDevice、Vosk、openai-whisper、Argos-Translate、FunASR(Python)

本文介绍了Python中常用的音频处理库PyAudio,详细解析了其核心功能、核心概念和典型工作流程。PyAudio是一个跨平台的音频I/O库,支持音频录制、播放、实时流处理和低延迟操作。核心概念包括PyAudio类(管理音频设备和流)和Stream类(代表音频流)。文章重点讲解了open()方法的关键参数、回调函数的使用方式以及典型的工作流程,包括设备查询、流配置和资源释放。PyAudio适用于需要实时音频处理的场景,如语音识别和音频效果处理。

算法工程师 705

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1812

Javafx之网格布局,下拉框,单(多)选框

一、连接数据库 帮助类 package com.zking.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * 连接数据库 帮助类 * @author Administrator * */ public class DBHelper { //注册驱动 static { tr

m0_67368271的博客 2441

激光焦点动态跟踪技术实战大揭秘:电容式与同轴视觉的巅峰对决

激光焦点动态跟踪技术是保证激光加工质量的关键因素。本文对比评测了电容式和同轴视觉两种主流技术:电容式响应速度快、成本低,适合高速稳定加工环境,但易受电磁干扰;同轴视觉精度高、抗干扰强,适合精密加工和复杂工件,但成本较高且处理速度受限。评测结果表明,企业应根据加工需求、预算和环境选择合适技术。未来该技术将向智能化、多技术融合方向发展,为工业应用提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 123

JavaFX使用ChoiceBox、ComboBox实现下拉列表

目录 一、环境 二、模拟 三、代码 一、环境 jdk8 二、模拟 三、代码 package xyz.hashdog.class36_37_38; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.ChoiceBox; import ...

corleone_4ever的博客 8205

RK3588开发笔记-ES8311音频芯片调试记录

本篇博客主要记录如何在RK3588平台试ES8311音频芯片的过程。这包括硬件连接、内核配置、驱动程序调试和测试步骤。通过以上步骤,我们成功在RK3588平台上调试了ES8311音频芯片。这包括硬件连接、内核配置、设备树配置、驱动加载以及音频测试。希望这篇调试记录能为其他开发者提供一些帮助。如果你有任何问题或建议,欢迎留言讨上调论。

flypig has a dream! 3158

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java开发笔记(一百四十)JavaFX的选择框

与Swing一样,JavaFX依然提供了三种选择框,它们是复选框CheckBox、单选按钮RadioButton、下拉框ComboBox,分别说明如下: 一、复选框CheckBox 复选框允许同时勾选多个,已勾选的时候在方框内部打个勾,未勾选的时候显示空心方框。查看CheckBox的源码,发现它与Button控件都派生自抽象类ButtonBase,因而CheckBox拥有和Button同样的set...

pinlantu的博客 8209

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

javafX初探(滚动条)

本节我们来介绍滚动条。 ScrollBar类可以让我们在应用中创建滚动条。下图展示了滚动条的三个部分,拇指健、左右按钮和轨迹。 创建一个滚动条 ScrollBar sc = new ScrollBar(); sc.setMin(0); sc.setMax(100); sc.setValue(50);   我们可以使用setMin和setMax方法来设置滚动条的最小值和最大值,当

貌似君子的专栏 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JavaFx Line 可拖曳式 拉伸 拖动

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33796177的博客 927

javaFX FXML 下拉框/选择框/choicebox 的 填充以及用enum/枚举填充 用法

1.普通地加载 <Label layoutX="18.0" layoutY="164.0" text="性别" /> <ChoiceBox fx:id="outBhEncodingCbx" layoutX="139.0" layoutY="160.0" prefWidth="150.0"> <items> <FXCollections fx:factory="observableArrayList"> <S

violet_ever_garden的博客 6309

java下拉列表

java“图形界面—下拉列表” @java图形界面 1.用到了两个组件"JComboBo"+“JLabel” 2.本次还用到了“一维函数”+“二维函数” 代码:ItemEvent 联动下拉列表是指一组“相互关联”的下拉列表,相邻的两个下拉列表是父子关系,改变父下拉列表的值,子下拉列表也随之改变。在页面中将显示一个三级联动下拉列表,在省份的下拉列表框中选择地区,在省级下拉列表中将显示出该市的地级市信...

wjfckx的博客 2693

JavaFX学习之道:文本框TextField

原文地址http://download.oracle.com/javafx/2.0/ui_controls/text-field.htm   TextField类实现了一种可以接受和显示文本输入的UI控件,它提供了接受用户输入的功能。和另一个文本输入控件PasswordField一起都继承了TextInput这个类,TextInput是所有文

Java小迷的专栏 4万+
上一篇: POI学习之道:HSSFWorkBooK用法
Java小迷
博客等级 码龄13年 147粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值