Tooltip -- 为MenuItem实现Tooltip

Tooltip -- 为MenuItem实现Tooltip

 

一、Node组件可以很容易的添加Tooltip

在JavaFX2中,Tooltip可以很容易的实现在所有的Node组件中,如:

 Button button = new Button("Hover Over Me");
 button.setTooltip(new Tooltip("Tooltip for Button"));

或者

 Rectangle rect = new Rectangle(0, 0, 100, 100);
 Tooltip t = new Tooltip("A Square");
 Tooltip.install(rect, t);


可是有些特殊的组件并继承于Node,比如MenuItem。

 

二、有两种办法为MenuItem实现Tooltip

1 使用CustomMenuItem类它允许封装任意的Node作为显示内容,此时为具体的Node添加Tooltip即可。

    这个方法会比较麻烦,需要先定义一个通用的CustomMenuItem菜单项,但是这样一来原本值需要为MenuItem定义的CSS现在要重新修改了

 

2 响应MenuItem的激活和取消显示事件

    在鼠标移到某个菜单项上面时,就会响应MenuValidation事件,此时显示Tooltip

    在鼠标移到其他菜单项时,会触发其他菜单项的MenuValidation事件,Tooltip会刷新

    在菜单消失时,会触发Hidden事件,此时隐藏Tooltip

 

    见下面的代码:

            curMenu.setOnMenuValidation(new EventHandler<Event>() {

                @Override
                public void handle(Event t) {
                    String help = "This is tooltip!";

                    if (tooltip == null) {
                        tooltip = new Tooltip();
                        tooltip.setWrapText(true);
                        tooltip.setTextAlignment(TextAlignment.LEFT);
                        tooltip.setPrefSize(200, 200);
                        tooltip.setMinSize(200, 100);
                    }
                    tooltip.setText(help);

                    Window window = target.getContextPane().getScene().getWindow();
                    double x = window.getX() + window.getWidth() - tooltip.getPrefWidth() - 50;
                    double y = window.getY() + 50;
                    tooltip.show(window, x, y);//将tooltip显示在Window的右上角
                }
            });
            curMenu.setOnHidden(new EventHandler<Event>() {

                @Override
                public void handle(Event t) {
                    //这里所以菜单是共用的同一个tooltip
                    if (tooltip != null) {
                        tooltip.hide();
                    }
                }
            });

 


三、一些相关的网址

http://stackoverflow.com/questions/13927559/menuitem-tooltip-in-javafx2

http://stackoverflow.com/questions/11647080/how-to-properly-size-and-wrap-tooltips

https://javafx-jira.kenai.com/browse/RT-23720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel

http://docs.oracle.com/javafx/2/ui_controls/tooltip.htm

http://docs.oracle.com/javafx/2/api/index.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值