JavaFX:如何设置正确的工具提示位置?

问题描述 投票:0回答:2

我有一个

TextField
,我希望在某些情况下显示
Tooltip

执行检查后,我运行以下代码:

textFieldUsername.setTooltip(new Tooltip("Enter username!"));
textFieldUsername.getTooltip().setAutoHide(true);
textFieldUsername.getTooltip().show(textFieldUsername, 1, 1);

因此,当有人尝试使用空用户名登录时,他会收到“用户名”提示

Tooltip
TextField

但是当需要采取行动时,屏幕左上角会弹出

Tooltip

我应该计算场景的坐标,然后将我的

TextField
坐标添加到其中,还是有办法将
1, 1
调用中的这些
show()
参数设置为相对于
TextField
位置?

position tooltip javafx-2 javafx
2个回答
12
投票

我认为坐标总是相对于屏幕的。要计算组件坐标,您需要合并场景和窗口坐标。

Point2D p = label.localToScene(0.0, 0.0);
label.getTooltip().show(label,
        p.getX() + label.getScene().getX() + label.getScene().getWindow().getX(),
        p.getY() + label.getScene().getY() + label.getScene().getWindow().getY());

0
投票

如果你想直接在组件下显示它:

tooltip.getScene().setOnMouseExited(event-> tooltip.hide());
tooltip.setOnShown(e-> {
tooltip.getScene().getWindow().setX(component.localToScreen(component.getBoundsInLocal()).getMinX()-9); // -9 compensate hard coded shadow inset of the tootltip popup inset
            tooltip.getScene().getWindow().setY(component.localToScreen(component.getBoundsInLocal()).getMaxY()-6);
        });
© www.soinside.com 2019 - 2024. All rights reserved.