此Popup
小部件的资源和示例含糊不清。
假设我在舞台上的某处有一个随机的Node
。如何在其下面打开Popup
(例如,如下拉菜单,但其中包含其他节点)。
我正在努力避免使用样板代码(即自己微调位置)。
更新1:
要么Point2D point = node.localToScene(0.0, 0.0);
不能正常运作,要么我错了。
更新2:
See here a simple example, but lacking the functionality I'm needing
答案 0 :(得分:2)
我们假设你有节点node
你可以通过
获得自己的位置Point2D point = node.localToScene(0.0, 0.0);
// now get point.getX() and point.getY() here
考虑您提供的示例(在更新2中):
我删除了这一位:
popup.setX(300);
popup.setY(200);
并修改了此代码:
show.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
popup.show(primaryStage);
Point2D point = show.localToScene(0.0, 0.0);
popup.setX(primaryStage.getX() + point.getX());
popup.setY(primaryStage.getY() + point.getY() + 40);
// this 40 could be show.getPrefHeight() if height of button is set
}
});
由于Popup
是一个单独的窗口,您需要通过添加Stage
的偏移来设置其位置。