【问题标题】:Javafx : Activate a tooltip with a buttonJavafx:使用按钮激活工具提示
【发布时间】:2013-07-01 13:30:28
【问题描述】:

我正在将 JavaFx 用于一个小应用程序,并且希望在用户单击“帮助”按钮时在 textArea 上显示工具提示。

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

【问题讨论】:

  • 你尝试用什么事件来展示它?

标签: button javafx tooltip


【解决方案1】:

这就是你要找的:

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());

}

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

【讨论】:

    【解决方案2】:

    按需显示工具提示的能力需要RT-19538 Customizable visibility timing for Tooltip 的分辨率,这在JavaFX 2.2 中没有实现。

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

    1. 改为在ContextMenu 中显示您的工具提示数据。使用 ContextMenu,您可以完全控制它的显示时间。
    2. 您可以为您需要的功能创建一个自定义PopupControl
    3. 您可以将默认 TooltipSkin 替换为自定义实现的皮肤,这样您就可以控制何时显示 Tooltip。
    4. 您可以实施 RT-19538 并为 TooltipTooltipSkin 提供补丁到 openjfx 项目。

    Jide's JavaFX Beta Release 等第三方库提供了特殊类,如装饰器实用程序、IntelliHints 和 ShapedPopups,可能对您的情况有用。

    【讨论】:

      【解决方案3】:

      下面显示了control 的工具提示。
      如果 control 分配有 Tooltip,则不会更改此工具提示。

      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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-29
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 2021-05-31
        相关资源
        最近更新 更多