使用 Javafx 模仿 ListView 中的 CTRL+单击多项选择

2024-02-10

我试图找到在 ListView 中选择多个项目的不同方法。 GUI 将在触摸屏显示器上运行,因此我无法按住 CTRL+单击。通过研究过去的各种帖子,我已经能够通过将所有选定的项目保留在数组中然后循环遍历以获得最终选择来实现多重选择。我的代码遇到的唯一问题是,与 CTRL +click 相比,选择是顺利完成的,因为每次选择新项目时,我的代码都会导致类型闪烁。所以基本上 listView 会清除所有选择,然后选择正确的选择。有没有办法让这个过渡顺利进行?模仿触摸来获得 CTRL+单击效果会更容易吗?

selectedList = new int[totalTypes];//total number of item properties

for(int x=0; x<selectedList.length;x++){//0 = not selected, 1 = selected
    selectedList[x]=0;
}
testView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

    testView.setOnMouseClicked(new EventHandler<Event>(){
        @Override
        public void handle(Event event){
                if(selectedList[testView.getSelectionModel().getSelectedIndex()]==0){
                    selectedList[testView.getSelectionModel().getSelectedIndex()]=1;
                }
                else{
                    selectedList[testView.getSelectionModel().getSelectedIndex()]=0;
                }

                for(int x=0; x<selectedList.length;x++){
                    if(selectedList[x]==1){
                        testView.getSelectionModel().select(x); 
                    }
                    else{
                        testView.getSelectionModel().clearSelection(x);;
                    }
                }


        }

    });

您可以在用户单击时更改选择ListCell你自己而不是使用标准事件处理:

@Override
public void start(Stage primaryStage) {
    ListView<Integer> listView = new ListView<>();
    listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
    listView.getItems().setAll(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    listView.addEventFilter(MouseEvent.MOUSE_PRESSED, evt -> {
        Node node = evt.getPickResult().getIntersectedNode();

        // go up from the target node until a list cell is found or it's clear
        // it was not a cell that was clicked
        while (node != null && node != listView && !(node instanceof ListCell)) {
            node = node.getParent();
        }

        // if is part of a cell or the cell,
        // handle event instead of using standard handling
        if (node instanceof ListCell) {
            // prevent further handling
            evt.consume();

            ListCell cell = (ListCell) node;
            ListView lv = cell.getListView();

            // focus the listview
            lv.requestFocus();

            if (!cell.isEmpty()) {
                // handle selection for non-empty cells
                int index = cell.getIndex();
                if (cell.isSelected()) {
                    lv.getSelectionModel().clearSelection(index);
                } else {
                    lv.getSelectionModel().select(index);
                }
            }
        }
    });

    Scene scene = new Scene(listView);

    primaryStage.setScene(scene);
    primaryStage.show();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javafx 模仿 ListView 中的 CTRL+单击多项选择 的相关文章

  • 如何编写 Maven 构建脚本来执行 Java

    如何在构建过程中或构建刚刚完成后执行 Java 程序 可以直接从 pom 中执行此操作吗 mvn exec java Dexec mainClass org sonatype mavenbook weather Main EDIT 假设我想
  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • Selector.close() 是否关闭所有客户端套接字?

    我是 nio 套接字的新手 我已经使用 nio 套接字编写了一个服务器 现在我正在尝试编写关闭钩子以确保通过清理资源正常退出 我的问题是Selector close 方法关闭所有客户端套接字 如果没有 请告诉我如何访问所有客户端套接字 而无
  • Java:为什么.class文件中的方法类型包含返回类型,而不仅仅是签名?

    class 文件的常量池中有一个 NameAndType 结构 它用于动态绑定 该类可以 导出 的所有方法都被描述为 签名 返回类型 喜欢 getVector Ljava util Vector 当某些 jar 中方法的返回类型发生更改时
  • JAX-WS 入门 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有人可以推荐一些关于 JAX WS 入门的好教程吗 使用各种工具 如 wsgen 等 您可以从这里开始 通过 Java SE 6 平台介绍
  • 使用 Spring MVC 在 jar 文件中显示 jsp 页面

    我正在使用 Spring MVC 3 2 2 在 java 中开发一个 Web 应用程序 我在从 jar 文件中加载 jsp 页面时遇到问题 Spring MVC Web应用程序具有以下结构 META INF WEB INF spring
  • Android 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) libwebviewchromium.so

    对于 android 4 4 我多次收到 Native crash at system lib libwebviewchromium so 错误 以下是设备包括 Xperia Z1 SO 01F 16 30 2 Galaxy Tab4 7
  • 用于制作代码编辑器的 JavaFX 相当于 JSyntaxPane 的什么?

    以前在 Swing 中 我使用过JSyntaxPane用于制作一个小型 Java 源代码编辑器 为了练习 我决定用 JavaFX 重做整个项目并添加对更多语言的支持 最好是尽可能多 不过好像没有什么类似的JSyntaxPane 一些研究让我
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • 为休息服务实施 JUnit 测试

    我必须为我的休息服务实现一些 JUnit 测试 例如 这是我的休息服务之一 Path dni fe public class HelloWorld POST Path home Consumes MediaType APPLICATION
  • 始终将双精度舍入

    我怎么总是能把一个double to an int 并且永远不要将其四舍五入 我知道Math round double 但我希望它始终向上舍入 所以如果是的话3 2 四舍五入为 4 您可以使用Math ceil method 请参阅Java
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • 如何使用 AffineTransform.quadrantRotate 旋转位图?

    我想旋转一个bitmap关于它的中心点 然后将其绘制成更大的图形上下文 位图是40x40 pixels 图形上下文是500x500 pixels 这就是我正在做的 BufferedImage bi new BufferedImage 500
  • Spring MVC:通用 DAO 和服务类

    我正在 Spring MVC 中编写网页 我使用 Generic DAO 编写了所有 DAO 现在我想重写我的服务类 我该如何写 通用服务 我的 DAO 如下 DAO package net example com dao import j
  • 使用 Hibernate Envers 的复合表

    我有一个带有复合表的应用程序 其中包含一个额外的列 一切正常 直到我们添加 Hibernate Envers Audited org hibernate MappingException 无法读取 no pack response Resp
  • Axis2 的 wsdl2java 在 RPC/Encoded 样式 Web 服务上失败

    Axis2 有替代方案吗 或者让它工作的方式 例如不同的数据绑定 Retrieving document at Exception in thread main org apache axis2 wsdl codegen CodeGener
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果

随机推荐

  • 识别android中的DTMF音

    我计划在 android 中创建一个 centerx 系统应用程序 其中有一个语音信箱会设置在接收方 根据语音邮件中的指示 呼叫者必须按下拨号盘中的号码 接收方应识别该号码并执行相应的操作 有谁知道如何在接收方检测呼叫者按下的号码 其背后的
  • 如何使用 OpenXML 和 C# 从 Excel 文档中的合并单元格获取值

    我在合并单元格时遇到问题 如果我在第一个单元格 B3 中有值 并且该单元格与其他一些单元格 例如 C3 D3 E3 F3 F4 合并 在 Excel 文档中我只能看到一个值 这很棒 但当我请求 C3 D3 E3 F3 值时 我想从 GetC
  • 在 WIX 中运行时动态为快捷方式分配名称

    我想根据用户输入为快捷方式分配不同的名称 使用 WiX 工具集是否可行 我尝试将财产价值分配给Name的属性Shortcut元素 但它不起作用 的名称栏快捷方式表 http msdn microsoft com en us library
  • 在 Ionic 2 中,如何创建使用 Ionic 组件的自定义指令?

    创建基本指令很简单 import Component from angular2 core Component selector my component template div Hello div export class MyComp
  • 当状态改变时,React-typing-animation 不会重新渲染

    我有以下组件 import React Component from react import Typing from react typing animation export class InfoDisplayer extends Co
  • 如何在使用hadoop时使用logger api编写java日志文件

    我写了一个我想调试的地图缩减代码 为此 我无法使用标准输出 因为除非发生错误 否则 Hadoop 平台不会将其打印到屏幕上 相反 我尝试使用记录器来创建日志文件 我使用处理程序将其拆分为两个文件 不幸的是 严重 日志文件为空 而通用日志文件
  • java.io.IOException:Android 设备上没有剩余空间

    我们在 Android 市场上有应用程序 我们的用户从这个错误中得到了很多 java io IOException 设备上没有剩余空间 从我到目前为止发现的情况来看 我知道他们的外部存储上有足够的空间 而且这只发生在 Android 2 x
  • 如何使用openCV python从文本文档中删除水印?

    我是 OpenCV 新手 我需要帮助从该图像中删除水印 我尝试使用修复 但我想要一种更自动化的特征映射和修复方式 请帮助我 如果您的所有图像都是这样的并且具有水印 如具有浅灰色水印的问题所示 那么简单的阈值操作将起作用 import cv2
  • Flask 和 React - Spotify 授权后处理令牌

    我已经在我的应用程序中实现了 JWT 用于用户登录 在 Spotify Auth 之前 如下所示 Flask auth blueprint route auth login methods POST def login user get p
  • 快速:didSelectRowAtIndexPath

    我有 tableViewController 我想点击 1 个单元格并获取print 0 然后点击2个单元格并得到print 1 但我的代码不起作用 为什么 import UIKit class MasterViewController U
  • Laravel 身份验证登录不起作用

    我是 Laravel 的新手 我正在开发 Laravel 身份验证系统 虽然注册有效 但登录没有执行任何操作 用户控制器 php class UserController extends Controller public function
  • 2 状态可舍入数字文本框与knockoutjs

    我想要一个具有 2 个状态的 html 数字文本框 当聚焦时 它必须显示所有小数位 当焦点丢失时 只显示 2 位小数 我几乎已经实现了 HTML
  • 如何向服务器发送数据

    我想做一个登录 那么如何将用户名和密码发送到我的服务器呢 我为服务器编写了一个 php 脚本 他将收到用户名和密码 如果用户名和密码正确 他将响应 成功 那么如何发送到服务器呢 用 onResponse 发送后呢 您可以使用 OkHttp
  • 在 R 中安装包时出现警告

    我一直在尝试在 R 中安装 ggplot2 包 这是我收到的警告 read dcf file path pkgname DESCRIPTION c Package Type 中的错误 无法打开连接 另外 警告消息 1 在 download
  • 将括号内第一个单词的第一个字母大写

    我想将括号内每个字符串的第一个字母大写 如果我们有这个字符串 const text This forest or jungle is really beautiful 期望的结果是 This Forest or jungle is Real
  • 点表示法与方法表示法

    我正在深入研究 iOS 编程 但我很难理解点表示法和方法表示法的想法 据我了解 点表示法可用于调用属性上的 setter getter 并且写入 读取更加清晰 方法表示法用于向对象发送消息以对其进行操作等 有人可以给我一个简单的解释 解释为
  • iOS:如何以最简单的方式测试互联网连接,而不冻结应用程序(没有可达性)?

    在我的代码中 我曾经使用三种方法来检查互联网 但它们有限制 1 可达性方法 BOOL isInternetOk Reachability curReach Reachability reachabilityWithHostName appl
  • Eclipse Compare Editor:“下一个差异”和“下一个更改”按钮之间的区别?

    今天问一个简单的问题 在 Eclipse 比较编辑器中 右键单击文件 比较 下一个差异 和 下一个更改 按钮之间有什么区别 他们似乎做着完全相同的事情 它烦我 Thanks The 比较编辑器 的帮助页面 http help eclipse
  • CSS 变换 - 保持悬停状态的值

    我将一个盒子改造为旋转 10 并添加悬停状态以增加尺寸 box margin 0 auto background blue width 100px height 100px moz transform rotate 10deg webkit
  • 使用 Javafx 模仿 ListView 中的 CTRL+单击多项选择

    我试图找到在 ListView 中选择多个项目的不同方法 GUI 将在触摸屏显示器上运行 因此我无法按住 CTRL 单击 通过研究过去的各种帖子 我已经能够通过将所有选定的项目保留在数组中然后循环遍历以获得最终选择来实现多重选择 我的代码遇