在JavaFX中显示禁用控件上的工具提示

时间:2014-06-10 12:48:00

标签: java javafx javafx-8

可以在禁用的控件上显示工具提示吗?

我有以下代码,但这不起作用:

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

有没有人解决这个问题?

THX

3 个答案:

答案 0 :(得分:13)

答案是否定的。目前,您无法在禁用的节点上显示工具提示,原因很简单,因为禁用的节点没有收到任何MouseEvents。

您可以在此处查看官方问题跟踪器中提出的问题(需要登录):https://javafx-jira.kenai.com/browse/RT-28850

解决问题的一个方法是将Control包装成其他内容。

例如,将控件放入另一个Control,如SplitPane或Label。然后,您可以将工具提示应用于该包装并禁用第一个控件。

答案 1 :(得分:0)

以下是使用CustomMenuItem类的解决方法:

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

答案 2 :(得分:0)

不是直接的,但是您可以将按钮扭曲到另一个控件中,并且可以禁用或不禁用按钮,而该控件将响应鼠标的移动。

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
  

SplitPane扩展的节点“控件” ,不是“区域”也不是窗格。

所以这是一个控件,最适合我们的情况(翘曲按钮)。

您必须始终使用控件来扭曲另一个控件。您将无法通过其他方法访问setTooltip()方法。