Show Tooltip on disabled Control in JavaFX

天大地大妈咪最大 提交于 2019-12-10 12:39:43

问题


It is possible to show a Tooltip on a disabled Control?

I have the following code and this doesn't work:

txt_searchText.setDisable(true);
txt.searchText.setTooltip(new Tooltip("Message"));

Has anyone a solution for that problem?

Thx


回答1:


The answer is no. Currently you cannot show a tooltip on disabled Node, for the simple reason that disabled Nodes do not receive any MouseEvents.

You can see the issue being raised in the official issue tracler here (require login) : https://javafx-jira.kenai.com/browse/RT-28850

One solution to your problem could be to wrap your Control into something else.

For example, put your control into another Control, like a SplitPane or a Label. Then you could apply your tooltip to that wrapper and disable your first control.




回答2:


Here's a workaround using the CustomMenuItem class:

    customMenuItem.getContent().setOnMouseEntered(e -> {
        if (customMenuItem.isDisable()) {
            Tooltip.install(customMenuItem.getContent(), tooltip);
        } else {
            Tooltip.uninstall(customMenuItem.getContent(), tooltip);
        }
    });



回答3:


Not directly but you can warp your button into another control and while your button could be disable or not, the control will answer to mouse movements.

Button button = new Button("Click me");     //create a button
button.setDisable(true);        //disable button in some way
SplitPane splitPane = new SplitPane(button);   //warp it into a splitPane
splitPane.setTooltip(new Tooltip("I'm the Tooltip Massage")); //Crete a tooltip

Node that SplitPane extends "Controls" not Region and not pane.

so it's a Control and best for our case (warping buttons).

you must always use a Control to warp another control. other way you will not have access to setTooltip() method.



来源:https://stackoverflow.com/questions/24141397/show-tooltip-on-disabled-control-in-javafx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!