7

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

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

4

3 回答 3

15

这就是您要查找的内容:

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

}

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

于 2013-11-12T20:01:10.123 回答
7

按需显示 Tooltip 的能力需要RT-19538 的分辨率 Tooltip 的可定制可见性计时,这在 JavaFX 2.2 中未实现。

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

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

3rd 方库(例如Jide的 JavaFX Beta Release)提供了特殊的类,例如 Decorator 实用程序、IntelliHints 和 ShapedPopups,它们可能对您的情况有用。

于 2013-07-01T19:03:06.970 回答
1

下面显示了一个工具提示control
如果controlTooltip分配给,则不会更改此工具提示。

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();
}
于 2020-11-07T04:58:52.207 回答