Button Javafx:使用按钮激活工具提示

Button Javafx:使用按钮激活工具提示,button,javafx,tooltip,Button,Javafx,Tooltip,我将JavaFx用于一个小应用程序,希望在用户单击“帮助”按钮时在文本区域显示工具提示 将tootltip链接到my textArea没有问题,但是当用户单击按钮时无法激活它。有没有办法做到这一点?按需显示工具提示的功能需要的分辨率为,而JavaFX 2.2中没有实现这一分辨率 作为解决方法,您可以尝试以下任何可能的策略: 改为在中显示工具提示数据。通过上下文菜单,您可以完全控制它的显示时间 您可以为所需的功能创建自定义 您可以使用自定义实现的外观替换默认工具提示外观,该外观允许您控制何时显示工

我将JavaFx用于一个小应用程序,希望在用户单击“帮助”按钮时在文本区域显示工具提示


将tootltip链接到my textArea没有问题,但是当用户单击按钮时无法激活它。有没有办法做到这一点?

按需显示工具提示的功能需要的分辨率为,而JavaFX 2.2中没有实现这一分辨率

作为解决方法,您可以尝试以下任何可能的策略:

  • 改为在中显示工具提示数据。通过上下文菜单,您可以完全控制它的显示时间
  • 您可以为所需的功能创建自定义
  • 您可以使用自定义实现的外观替换默认工具提示外观,该外观允许您控制何时显示工具提示
  • 您可以实现RT-19538,并为和项目提供补丁

  • 第三方库(如)提供了特殊类,如装饰实用程序、IntelliHits和ShapedPopup,这些类在您的情况下可能会很有用。

    这就是您需要的:

    final Button helpButton = new Button("Help");
    helpButton.setOnAction(new EventHandler()
    {
        public void handle(Event arg0)
        {
            showTooltip(stage, helpButton, "test tool tip", null);
        }
    });
    
    public static void showTooltip(Stage owner, Control control, String tooltipText,
        ImageView tooltipGraphic)
    {
        Point2D p = control.localToScene(0.0, 0.0);
    
        final Tooltip customTooltip = new Tooltip();
        customTooltip.setText(tooltipText);
    
        control.setTooltip(customTooltip);
        customTooltip.setAutoHide(true);
    
        customTooltip.show(owner, p.getX()
            + control.getScene().getX() + control.getScene().getWindow().getX(), p.getY()
            + control.getScene().getY() + control.getScene().getWindow().getY());
    
    }
    

    只需将按钮作为输入而不是控件传递。

    以下显示了
    控件上的工具提示
    如果
    控件
    指定了
    工具提示
    ,则不会更改此工具提示

    public static void showOneTimeTooltip(Control control, String tooltipText) {
    
        Point2D p = control.localToScreen(5 , 5);
    
        final Tooltip customTooltip = new Tooltip(tooltipText);
        customTooltip.setAutoHide(false);
        customTooltip.show(control,p.getX(),p.getY());
    
        PauseTransition pt = new PauseTransition(Duration.millis(2000));
        pt.setOnFinished(e->{
            customTooltip.hide();
        });
        pt.play();
    }
    

    您尝试用什么事件来显示它?