JavaFx 关键字高亮文本实现

这篇具有很好参考价值的文章主要介绍了JavaFx 关键字高亮文本实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文地址:JavaFx 关键字高亮文本实现 - Stars-One的杂货小窝

整蓝奏云批量下载器里的搜索功能想到的一个关键字高亮功能,借助textflow组件来实现,记录一下

本文基于TornadoFx框架进行编写,封装工具代码是kotlin版本

然后也是顺便把这个封装成了stars-one/common-controls
里的xHighLightTextFlow

效果

JavaFx 关键字高亮文本实现

思路

实现思路不是太难,就是要看关键字的位置,然后计算下标

关键字位置有三种情况:

  1. 开头
  2. 中间
  3. 结尾

我们需要找到关键字的下标,然后依次创建出对应的label,如果是有关键字的label,则设置一下样式(背景色为黄色)

之后再将得到的多个label添加到textflow中即可

这里注意下,需要考虑下大小写的情况,我的做法就是计算坐标的时候,将文本和关键字全部转为小写来计算,这样就不会出现问题文章来源地址https://www.toymoban.com/news/detail-439500.html

代码

val myTextFlow = textflow {  }
val keyword = "我的"
val itemTitle = "我的东西22ss11"

//这里转为小写处理,方便后面得到index
val itemTitleLowcase = itemTitle.toLowerCase()
val keywordLowcase = keyword.toLowerCase()

val keyWordLength = keyword.length

when {
    itemTitleLowcase.startsWith(keywordLowcase) -> {

        //关键字位于开头
        myTextFlow.apply {
            label(itemTitle.substring(0, keyWordLength)) {
                style {
                    backgroundColor += c("#ffff00")
                }
            }
            label(itemTitle.substring(keyWordLength))
        }
    }
    itemTitleLowcase.endsWith(keywordLowcase) -> {
        val startIndex = itemTitleLowcase.indexOf(keywordLowcase)
        //关键字位于结尾
        myTextFlow.apply {
            label(itemTitle.substring(0, startIndex))
            label(itemTitle.substring(startIndex, itemTitleLowcase.length)) {
                style {
                    backgroundColor += c("#ffff00")
                }
            }
        }
    }
    else -> {
        //关键字位于中间
        val arr = itemTitleLowcase.split(keywordLowcase)
        val range1 = arr.first().indices
        val range2 = arr.first().length+keyWordLength until itemTitle.length

        myTextFlow.apply {
            label(itemTitle.substring(range1))
            label(keyword) {
                style {
                    backgroundColor += c("#ffff00")
                }
            }
            label(itemTitle.substring(range2))
        }
    }

}

到了这里,关于JavaFx 关键字高亮文本实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【el-tree查询并高亮】vue使用el-tree组件,搜索展开并选中对应节点,高亮搜索的关键字,过滤后高亮关键字,两种方法

    效果图这样的,会把所有的有这些的节点都展开 代码: 这里的逻辑就是通过递归循环把所有和匹配的节点筛选出来 然后通过setCheckedKeys方法把他展开选中 然后通过filterReal把高亮标蓝 这个是用的官方文档的那个过滤方式,可以参考官方文档看一下。 只不

    2024年02月15日
    浏览(41)
  • 用ES搜索关键字并且返回模糊字段高亮

       一般来说,各个网站,首页的搜索,都会有进行全文搜索的示例,并且把模糊匹配的多个数据进行标记(高亮),这样便于全局检索关键的数据,便于客户进行浏览。基于此,本文简单介绍这种功能基本java 的 实现    由于公司页面此功能隐藏了,本文就以接口调用返回看具

    2024年02月14日
    浏览(41)
  • 【VSCode】设置关键字高亮的插件 | Highlight Word

    本文主要介绍在 VSCode 看代码时,怎样使某个单词高亮显示,主要通过以下三步实现: 安装 highlight-words 插件 配置 highlight-words 插件 设置高亮快捷键F8 工作是嵌入式开发的,代码主要是C/C++的,之前一直用 source insight 4 看代码,最近转到 VSCode ,使用 VSCode 看代码时,发现它居

    2024年02月11日
    浏览(35)
  • Vue中实现自动匹配搜索框内容 关键字高亮文字显示

    实现效果如下:  1.首先需要给输入框进行双向绑定  2.拿到搜索的结果去渲染页面  将返回的结果和搜索的进行比对 如果相同的 就变红 上代码 html部分 js部分

    2024年02月12日
    浏览(37)
  • 用 Python 从单个文本中提取关键字的四种超棒的方法

    自然语言处理分析的最基本和初始步骤是提取,在NLP中,我们有许多算法可以帮助我们提取文本数据的。本文中,云朵君将和大家一起学习四种即简单又有效的方法,它们分别是 Rake、Yake、Keybert 和 Textrank 。并将简单概述下每个方法的使用场景,然后使用附加示

    2023年04月08日
    浏览(41)
  • 【C++干货基地】面向对象核心概念 const成员函数 | 初始化列表 | explicit关键字 | 取地址重载

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 : 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活!   哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作

    2024年04月23日
    浏览(36)
  • 用python实现给出关键字查找并标注pdf文件中关键字

    要在Python中标注PDF文件中的,可以使用Python的PDFMiner库和Python的matplotlib库。 首先,需要安装这两个库。可以使用pip命令进行安装: shell 复制代码 pip install pdfminer.six matplotlib 接下来,可以使用以下代码实现查找和标注功能: python 复制代码 import pdfminer   from pdf

    2024年01月16日
    浏览(45)
  • Java中的volatile关键字实现原理

    在并发编程中,线程之间的可见性问题是非常重要的一项难题。Java中提供了一种解决并发可见性问题的机制,即volatile。 在本文中,我们将会讲解Java中volatile的实现原理,为什么它能够保证可见性,以及背后的实现原理涉及到的内存屏障和JVM屏障等内容。在学习

    2023年04月27日
    浏览(34)
  • 【iOS】weak关键字的实现原理

    关于什么是weak可以去看看我以前的一篇博客:【OC】 属性 SideTable 这个结构体,前辈给它总结了一个很形象的名字叫引用计数和弱引用依赖表,因为它主要用于管理对象的引用计数和 weak 表。在 NSObject.mm 中声明其数据结构: slock是为了防止竞争选择的自旋锁 r

    2024年02月16日
    浏览(24)
  • Python批量实现word中查找关键字

     一、背景         在日常办公和文档处理中,我们常常需要在大量的Word文档中查找特定的,然后进行接下来的操作,比如替换等。手动逐个打开并搜索文档显然是费时费力的。因此,利用Python编写一个批量实现Word中查找的程序可以大大提高效率和减

    2024年02月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包