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

5

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

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

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

当有人试图使用空用户名登录时,会在“用户名”文本框上方弹出一个“提示工具”。但是当动作发生时,“提示工具”会在屏幕左上角弹出。我应该计算场景的坐标,然后将我的“文本框”坐标添加到其中,或者有没有一种方法可以将show()调用中的这些“1,1”参数设置为相对于“文本字段”位置?
1个回答

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());

1
根据Javadoc中所述,正确的写法是:"public void show(Node ownerNode, double screenX, double screenY)在与屏幕相关的指定x,y位置显示弹出窗口。" - Sergey Grinev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接