JavaFx Tooltip悬浮提示使用及自定义代码详解

 更新时间:2021年12月21日 14:31:47   作者:Stars-one  
本篇是基于TornadoFx框架对Tooltip组件进行讲解,使用Kotlin语言,和传统Java使用有所区别,本章节包括对tooltip的样式定制化以及指定窗口显示,对JavaFx Tooltip悬浮提示使用及自定义相关知识感兴趣的朋友一起看看吧

本篇是基于TornadoFx框架对Tooltip组件进行讲解,使用Kotlin语言,和传统Java使用有所区别,仅供参考

介绍

鼠标悬浮在某个控件,弹出提示,效果如下:

使用

Tooltip一般是和某个节点控件绑定使用,这里的节点控件只能是control中的包javafx.scene.control,具体可以点击地址跳转查看

除此之外,还提供了另外一个方法,可以让tooltip在当前窗口的指定位置显示,比较麻烦的就是需要自己去计算偏移量

  • Tooltip.install(control,tooltip) 绑定使用
  • tooltip.show(window,x,y) 指定窗口和偏移量显示

PS: tooltip指的是Tooltip的对象,可以直接新建

Java中使用

简单地提下Java中的使用

//control是某个控件
Label label = new Lable("hello")
Tooltip.install(label, new Tooltip("鼠标悬浮显示的文字"));

TornadoFx中使用

class TestView : View("My View") {
    override val root = vbox {

        label("hello") {
            tooltip = tooltip("这是一段解释说明")
        }

    }
}

自定义

本章节包括对tooltip的样式定制化以及指定窗口显示

样式自定义

默认的黑底白字有些丑,有时候感觉看到不太清楚,我们可以对其样式进行调整,调整为白底黑字,代码如下:

label("hello") {
    tooltip = tooltip("这是一段解释说明"){
        style {
            backgroundColor += c("white")
            textFill = c("black")
        }
    }
}

效果如下图所示:

从上面的代码其实就是修改了tooltip内部的样式就可以了,举一反三,相关属性或样式修改即可对tooltip的样式进行调整

label("hello") {
    tooltip = tooltip {

        prefWidth = 200.0
        textAlignment = TextAlignment.LEFT
        isWrapText = true
        style {
            backgroundColor += c("white")
            textFill = c("black")
        }
        isAutoHide = false
        text = "这是一段长文本说明长文本说明这是一段长文本说明长文本说明"
    }
}

效果如下:

指定窗口显示

上面也是解释过,Tooltip有两种使用方法,一种是与控件进行绑定,另外则是指定窗口来使用,那么上面情况下是需要使用指定窗口这种方法呢?

答案很明确,有些控件并不支持直接安装tooltip的,那我们想要实现悬浮弹窗只能使用这个指定窗口显示的方法了

我们以Text为例子,再想上面的label那样写,tooltip会直接爆红的,原因是Text并不是control包中的组件

text("hello") {
    //注意这里,是声明了变量
    val tooltip = tooltip {

        prefWidth = 200.0
        textAlignment = TextAlignment.LEFT
        isWrapText = true
        style {
            backgroundColor += c("white")
            textFill = c("black")
        }
        isAutoHide = false
        text = "这是一段长文本说明长文本说明这是一段长文本说明长文本说明这是一段长文本说明长文本说明这是一段长文本说明长文本说明"
    }
    //监听鼠标划入事件
    setOnMouseEntered {
        tooltip.show(currentWindow)
    }
     
    //监听鼠标划出事件
    setOnMouseExited {
        ooltip.hide()
    }
}

上述代码对Text控件设置了鼠标划入和划出事件的监听,当鼠标划入的时候,就显示tooltip;当鼠标划出的时候,就将tooltip进行隐藏

滑动到图标

首先我们来看动态效果

tooltip自动移动位置有点奇怪,不过没找到具体原因,凑合着用了..

代码也是比较简单,只是在上面鼠标划入和划出的监听基础上加了修改图标的操作,不过感觉有些卡顿,图片宽高最好不要设置太大

图标是自己去iconfont-阿里巴巴矢量图标库生成了,就简单的改了下颜色,就有了两张图片

PS:实践的时候,注意下图片的路径,如下图

代码如下:

imageview("/img/que_normal.png") {
    fitWidth = 50.0
    fitHeight=50.0
    //注意这里,是声明了变量
    val tooltip = tooltip {

        prefWidth = 200.0
        textAlignment = TextAlignment.LEFT
        isWrapText = true
        style {
            backgroundColor += c("white")
            textFill = c("black")
        }
        isAutoHide = false
        text = "这是一段长文本说明长文本说明这是一段长文本说明长文本说明这是一段长文本说明长文本说明这是一段长文本说明长文本说明"
    }

     setOnMouseEntered {
         image = Image("/img/que_select.png")
         tooltip.show(currentWindow)
     }
    setOnMouseExited {
        image = Image("/img/que_normal.png")
        tooltip.hide()
    }
}

这里,还是建议使用字体库可能效果比较好,可以快速修改颜色

给自己打波广告,可以去看看我这个开源库Tornadofx学习笔记(4)——IconTextFx开源库,整合5000+个字体图标

下面这图片是我用字体库来实现的效果图:

到此这篇关于JavaFx Tooltip悬浮提示使用及自定义的文章就介绍到这了,更多相关JavaFx Tooltip悬浮提示内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java用编码检测代理ip是否有效

    Java用编码检测代理ip是否有效

    这篇文章主要为大家详细介绍了Java如何使用编码检测代理ip是否有效,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • java获取本地文件的多种方式实现与比较

    java获取本地文件的多种方式实现与比较

    这篇文章主要为大家详细介绍了java获取本地文件的多种方式实现与结果比较,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • 浅谈使用java实现阿里云消息队列简单封装

    浅谈使用java实现阿里云消息队列简单封装

    这篇文章主要介绍了浅谈使用java实现阿里云消息队列简单封装,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • docusaurus如何添加一个搜索功能

    docusaurus如何添加一个搜索功能

    这篇文章主要介绍了docusaurus如何添加一个搜索功能,本文通过实例图文相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • springboot 自定义权限标签(tld),在freemarker引用操作

    springboot 自定义权限标签(tld),在freemarker引用操作

    这篇文章主要介绍了springboot 自定义权限标签(tld),在freemarker引用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能

    IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能

    这篇文章主要介绍了IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Spring加载加密的配置文件详解

    Spring加载加密的配置文件详解

    这篇文章主要为大家详细介绍了Spring加载加密的配置文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 基于parameters参数实现参数化过程解析

    基于parameters参数实现参数化过程解析

    这篇文章主要介绍了基于parameters参数实现参数化过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • MyBatis-Plus 通用IService使用详解

    MyBatis-Plus 通用IService使用详解

    这篇文章主要介绍了MyBatis-Plus 通用IService使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 修改xml文件再也不用重启项目mybatis-xmlreload方法

    修改xml文件再也不用重启项目mybatis-xmlreload方法

    这篇文章主要为大家介绍了修改xml文件再也不用重启项目mybatis-xmlreload,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论