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

Dar*_*tal 0 java javafx javafx-2 javafx-8

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

我遇到的部分是,如何在屏幕上显示我的自定义工具提示而不将其添加到父节点?

jew*_*sea 6

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

默认工具提示:

你好示例默认

自定义工具提示:

你好样品

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

圆

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

此答案基于以下问题的答案: