有没有一种简单的方法在JavaFX中显示提示文本?

时间:2014-08-16 09:38:42

标签: popup javafx hint scalafx

在Borland VCL库中,几乎所有控件都具有提示属性。在运行时,当您将鼠标放在相应的控件上时,当您移动鼠标时,会弹出一个带有提示文本的小框,当Windows资源管理器和其他程序中的帮助消息保持在按钮上时,它会再次消失

JavaFX中是否有类似的概念(实际上,我使用的是ScalaFX)?

当然,我可以创建一个没有装饰的新舞台,添加一些鼠标听众等,但它是否已经在某处可用?

2 个答案:

答案 0 :(得分:17)

您可以使用Tooltip控件。

使用示例

如果您想在Control上使用工具提示,例如按钮,请设置工具提示:

button.setTooltip(
    new Tooltip("Button of doom")
);

否则,对于其他节点类型(如形状),请安装工具提示:

Circle circle = new Circle(15, 15, 42);
Tooltip.install(
    circle,
    new Tooltip("Circle of light")
);

<强>教程

Oracle有专门针对Tooltips的教程。

tooltip image

如上所示,您可以设置一个&#34;图形&#34;在工具提示上,可以是图像(或任何其他节点),它非常灵活。

工具提示样式

其他选项

如果Tooltip不是您想要的,还有其他方法可以显示弹出窗口:

答案 1 :(得分:0)

此代码创建基于GRAPHIC的工具提示。看看评论的htmlStr .....你可以玩它以及thisToolTip.setStyle .....看看会发生什么。您可以更改htmlStr中的样式和setStyle的字符串。但是,我无法使工具提示和窗格的大小匹配。所以有一个边框,但我把两种背景颜色都变成了牛奶。它给人一种没有边界的错觉。但事实并非如此。查看代码,如果您觉得有用,请使用它。

        private Tooltip createToolTip(String htmlStr) {
        Tooltip thisToolTip = new Tooltip();

//        String htmlStr = "<body style=\"background-color:cornsilk; "
//                + "border-style: none;\"> <u><b><font color=\"red\">Click Mouse's right button to see options</font></b></u><br><br>(3) Subha Jawahar of Chennai<br> now @ Chennai<br>Female <-> Married <-> Alive<br>Period : 1800 to 2099<br>D/o Dr. Subbiah [2] - <br> <b>Spouse :</b> Jawahar Rajamanickam [7] <br><br><b>Children :</b><br><br>Rudhra Jawahar [9]<br>Mithran Jawahar [10]<br><br></body>\n";
        WebView browser = new WebView();
        WebEngine webEngine = browser.getEngine();
        webEngine.loadContent(htmlStr);

        thisToolTip.setStyle("\n"
                + "    -fx-border-color: black;\n"
                + "    -fx-border-width: 1px;\n"
                + "    -fx-font: normal bold 12pt \"Times New Roman\" ;\n"
                + "    -fx-background-color: cornsilk;\n"
                + "    -fx-text-fill: black;\n"
                + "    -fx-background-radius: 4;\n"
                + "    -fx-border-radius: 4;\n"
                + "    -fx-opacity: 1.0;");

        thisToolTip.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);

        thisToolTip.setGraphic(browser);
        thisToolTip.setAutoHide(false);
        thisToolTip.setMaxWidth(300);
        thisToolTip.setGraphicTextGap(0.0);

        return thisToolTip;
    }