JavaFX:如何实现自定义工具提示

时间:2018-01-09 17:46:10

标签: java javafx javafx-8 javafx-2

我正在尝试创建自己的Tooltip类。基本上工具提示将是一个 标签底部的指针图形(FontAwesomeView)全部包含在 vbox 中。

我坚持的部分是,如何显示我的自定义工具提示在屏幕没有将其添加到父节点?

1 个答案:

答案 0 :(得分:3)

您无需实施自己的工具提示,只需自定义内置工具提示即可。

默认工具提示:

hello sample default

自定义工具提示:

hello sample

它也适用于在没有setTooltip方法的节点(如形状)上安装工具提示:

circular

自定义工具提示的示例代码:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.PopupWindow;
import javafx.stage.Stage;

public class BubbleTip extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    private static final String SQUARE_BUBBLE =
            "M24 1h-24v16.981h4v5.019l7-5.019h13z";

    @Override
    public void start(Stage stage) {
        Label label = new Label("hello,");
        label.setStyle("-fx-font-size: 16px;");

        label.setTooltip(makeBubble(new Tooltip(" world")));

        Circle circle = new Circle(20, Color.AQUA);
        Tooltip.install(circle, makeBubble(new Tooltip("circle")));

        VBox layout = new VBox(10, label, circle);
        layout.setPadding(new Insets(20));

        stage.setScene(new Scene(layout));
        stage.show();
    }

    private Tooltip makeBubble(Tooltip tooltip) {
        tooltip.setStyle("-fx-font-size: 16px; -fx-shape: \"" + SQUARE_BUBBLE + "\";");
        tooltip.setAnchorLocation(PopupWindow.AnchorLocation.WINDOW_BOTTOM_LEFT);

        return tooltip;
    }
}

这个答案基于以下答案: