我正在使用JavaFx作为一个小应用程序,并希望在用户点击“帮助”按钮时在textArea上显示工具提示。
将tootltip链接到我的textArea没有问题,但是当用户点击按钮时无法激活它。有没有办法做到这一点?
答案 0 :(得分:10)
这就是你要找的东西:
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());
}
只需将按钮作为输入传递而不是控制。
答案 1 :(得分:6)
按需显示工具提示的功能需要RT-19538 Customizable visibility timing for Tooltip的分辨率,这在JavaFX 2.2中未实现。
作为解决方法,您可以尝试以下任何可能的策略:
Jide's JavaFX Beta Release等第三方库提供了类似Decorator实用程序,IntelliHints和ShapedPopup的特殊类,可能在您的情况下非常有用。
答案 2 :(得分:0)
以下显示了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();
}