JavaFx 关键字高亮文本实现
原文地址:JavaFx 关键字高亮文本实现 - Stars-One的杂货小窝
整蓝奏云批量下载器里的搜索功能想到的一个关键字高亮功能,借助textflow组件来实现,记录一下
本文基于TornadoFx框架进行编写,封装工具代码是kotlin版本
然后也是顺便把这个封装成了stars-one/common-controls
里的xHighLightTextFlow
效果

思路
实现思路不是太难,就是要看关键字的位置,然后计算下标
关键字位置有三种情况:
- 开头
- 中间
- 结尾
我们需要找到关键字的下标,然后依次创建出对应的label,如果是有关键字的label,则设置一下样式(背景色为黄色)
之后再将得到的多个label添加到textflow中即可
这里注意下,需要考虑下大小写的情况,我的做法就是计算坐标的时候,将文本和关键字全部转为小写来计算,这样就不会出现问题
代码
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 关键字高亮文本实现的更多相关文章
- C#,WPF中使用多文本显示数据,并对其数据进行关键字高亮等操作
需求:针对多文本信息显示,我们需要对其内容中的某些关键字或者某行进行高亮显示,并用不同颜色显示. 分析:在C#中,首先要进行多文本信息显示,可以RichTextBox(不要使用TextBox)控件,该 ...
- [JavaScript]使页面内目标关键字高亮
1 源码 function keywordHighlighten(querySelector, key, bgColor){//文本关键字高亮 var doms = document.querySel ...
- IOS_SearchBar搜索栏及关键字高亮
搜索框的效果演示: 这个就是所谓的搜索框了,那么接下来我们看看如何使用代码来实现这个功能. 我所使用的数据是英雄联盟的英雄名单,是一个JSON数据的txt文件, JSON数据的处理代码如下所示: ? ...
- 在 Angular 中实现搜索关键字高亮
在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...
- C#在PDF中如何以不同颜色高亮文本
高亮的文本有助于阅读者快速有效地获取文章关键信息.在PDF文件中,对文章的不同文本,关键词.句等进行不同颜色的文本高亮操作,可以使阅读者在阅读过程中有效地区分不同高亮颜色文本的意义.在下面的示例中,我 ...
- 如何实现IOS_SearchBar搜索栏及关键字高亮
搜索框的效果演示: 这个就是所谓的搜索框了,那么接下来我们看看如何使用代码来实现这个功能. 我所使用的数据是英雄联盟的英雄名单,是一个JSON数据的txt文件, JSON数据的处理代码如下所示: // ...
- Java实现文本中的关键字高亮,匹配所有长度
这个方法还不完整,后面想起来再看,直接放代码 public static String getHeightlightWord(String textWord, String key){ StringB ...
- 【php+js】用PHP或者JS怎么显示搜索到的关键字高亮,及其文章里包含关键字的一小段
1.想要实现的效果: 2.思路:小数据量使用 php的正则替换,即[preg_replace()]函数 -->> 支持多个关键词高亮显示,中间参数1和参数2放入对应的数组即可. $titl ...
- JavaScript搜索关键字高亮的实现
高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色.一般在搜索结果页面会经常用到这个功能. 下面就为大家提供一种解决方案,用javascript实现. 首先在<head> ...
- 简单JavaScript语句实现搜索关键字高亮功能
高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色.一般在搜索结果页面会经常用到这个功能. 下面就为大家提供一种解决方案,用javascript实现. 首先在<head> ...
随机推荐
- vuforia 打包IOS 第一次启动正常, 删掉过程重新启动初始化失败。
我使用的是2019.4.17版本,降级到2019.2.17问题解决
- Linux centos7.6 安装 docker
1.安装官网教程 https://docs.docker.com/engine/install/centos/ 2.卸载之前的 docker sudo yum remove docker \ dock ...
- Rust for Rustaceans: Idomatic Programming for Experienced Developers Chap.2 Types
翻译的内容如果有不理解的地方或者是其他的差错,欢迎后台回复讨论. 类型在内存中的表示 Rust中的每一个值都有自己的类型(Type).在这一章中,我们将会看到Rust中的类型服务于许多不同的目的,但其 ...
- 01-第一个Spring程序
1.导包 所有和spring有关的包(有mybatis包的忽略),后期会使用maven引入 2. 引入spring的配置文件 可命名为applicationContext-service.xml或sp ...
- 狂神说SpringBoot笔记之编写一个http接口
编写一个http接口 1.1.在主程序的同级目录下,新建一个controller包,一定要在同级目录下,否则识别不到 2.代码 1 package com.example.app01.demo.api ...
- 2.错误代码C2440
错误 C2440 "初始化": 无法从"const char [5]"转换为"char *" 从整型强制转换为指针类型要求 reinterp ...
- (数据科学学习手札150)基于dask对geopandas进行并行加速
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,geopandas作为我们非常 ...
- 使用 DeepSpeed 和 Hugging Face 🤗 Transformer 微调 FLAN-T5 XL/XXL
Scaling Instruction-Finetuned Language Models 论文发布了 FLAN-T5 模型,它是 T5 模型的增强版.FLAN-T5 由很多各种各样的任务微调而得,因 ...
- 解决ubuntu 20.04、22.04 即新版本 fcitx 无法使用的问题
前提 已在系统设置中将fcitx设置为默认 fcitx开机自启 配置的过程不在本文讨论范围之内 开机自启可通过安装gnome-tweaks配置实现 问题分析流程 手动启动fcitx时提示设置XMODI ...
- ML-程序练习-Dragon
回归问题 前期 假设已有某样例,参数为w=1.477, b=0.089,即为\(y=1.477x+0.089\) 过程分析 数据采样 首先我们需要模拟一些带有真实样本观测误差的数据(因为真实情况是真实 ...