美文网首页
javafx中为tooltip设置显示时间

javafx中为tooltip设置显示时间

作者: 兰冬 | 来源:发表于2018-06-28 10:24 被阅读0次

最近项目中用到了javafx中的tooltip提示框,因为是系统自带的所以用起来非常方便。但是使用后发现提示框的显示时间太短了,在百度上找了很长时间也没找到解决方案,于是决定自己研究一下源码,试试能不能找到解决方案。
在阅读源码的过程中看到了如下代码

    private static TooltipBehavior BEHAVIOR = new TooltipBehavior(
        new Duration(1000), new Duration(5000), new Duration(200), false);

通过名字和参数大概可以猜到这个变量就是用来控制显示时间的。为了验证猜想是否正确我便找到了TooltipBehavior这个类,它是Tooltip的一个内部类,它的构造方法如下图所示


TooltipBehavior的构造方法

图片只截取了方法头,从参数名字就能够看出来每个参数的作用。第一个参数用于指定从鼠标进入到提示框显示的时间,第二个参数就是我们苦苦寻找的提示框显示时间,第三个参数用于指定从鼠标移开到提示框消失的时间,第四个参数暂时不知道是什么,保持默认就行。
看完这些代码就可以动手修改显示时间了。大致方案是通过反射拿到TooltipBehavior的构造方法,利用构造方法创建对象,然后得到Tooltip的BEHAVIOR变量,最后将创建的TooltipBehavior对象赋值给BEHAVIOR变量。
具体实现代码如下:

public static void setTipTime(Tooltip tooltip,int time){
        try {
            Class tipClass = tooltip.getClass();
            Field f = tipClass.getDeclaredField("BEHAVIOR");
            f.setAccessible(true);
            Class behavior = Class.forName("javafx.scene.control.Tooltip$TooltipBehavior");
            Constructor constructor = behavior.getDeclaredConstructor(Duration.class, Duration.class, Duration.class, boolean.class);
            constructor.setAccessible(true);
            f.set(behavior, constructor.newInstance(new Duration(300), new Duration(time), new Duration(300), false));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

相关文章

  • javafx中为tooltip设置显示时间

    最近项目中用到了javafx中的tooltip提示框,因为是系统自带的所以用起来非常方便。但是使用后发现提示框的显...

  • Vue+iView实战及跳坑总结

    1、iView的Tooltip设置显示位置偏移量 在官方文档中,Tooltip显示文本可以自由的设置显示方向,但是...

  • ecahrts雷达图tooltip显示axis单轴数据

    1、遇到问题 在echarts雷达图中将tooltip.trigger设置为axis时失效,雷达图并不会显示单轴数...

  • tooltip实现

    生成tooltip完整流程:触发显示事件 -> 创建tooltip -> 调整tooltip位置 -> 添加动画 ...

  • 溢出显示tooltip

    在项目中我们通过tooltip来处理溢出显示省略号,划过进行展示。一般会选用Element UI中tooltip组...

  • echarts-doc

    【echarts3】 折线图我踩过的那些坑 (tooltip 设置,line 单个点/散点不显示问题) toolt...

  • echarts的tooltip 使用formatter后,图例小

    根据数据动态显示 tooltip 当没有优秀率和及格率的时候悬浮的时候不显示 tooltip图例 marker ...

  • button当disabled为true时,mouseleave

    这种情况是在使用antd中tooltip遇到的,因为要自己控制tooltip的显示和隐藏,出发元素有可能是被禁用的...

  • Element 的show-overflow-tooltip 的

    show-overflow-tooltip 属性可实现列内容过长被隐藏时显示tooltip的功能。 注:show-...

  • JavaFx载入资源不显示界面

    问题描述 今天使用javafx 构建 程序时, 在界面设置了一张图片资源,但是双击程序,不显示主界面,在cmd下发...

网友评论

      本文标题:javafx中为tooltip设置显示时间

      本文链接:https://www.haomeiwen.com/subject/hwowyftx.html