节点下的JavaFX弹出窗口

节点下的JavaFX弹出窗口,java,javafx,javafx-2,javafx-8,Java,Javafx,Javafx 2,Javafx 8,此弹出窗口小部件的资源和示例不明确 假设我在舞台上的某个地方有一个随机的节点。如何在其下方打开一个弹出窗口(例如,类似于下拉菜单,但其中包含其他节点) 我试图避免使用样板代码(即自己微调位置) 更新1: point2dpoint=node.localToScene(0.0,0.0)不能像我想象的那样工作,或者我用错了 更新2: 假设您拥有节点node 你可以通过 Point2D point = node.localToScene(0.0, 0.0); // now get point.getX

弹出窗口
小部件的资源和示例不明确

假设我在舞台上的某个地方有一个随机的
节点。如何在其下方打开一个
弹出窗口
(例如,类似于下拉菜单,但其中包含其他节点)

我试图避免使用样板代码(即自己微调位置)

更新1:

point2dpoint=node.localToScene(0.0,0.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
      }
});
show.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
弹出显示(初级阶段);
Point2D点=show.localToScene(0.0,0.0);
setX(primaryStage.getX()+point.getX());
setY(primaryStage.getY()+point.getY()+40);
//如果设置了按钮的高度,则可以显示该值。getPrefHeight()
}
});

由于
弹出窗口
是一个单独的窗口,因此需要通过添加
阶段
的偏移量来设置其位置。标签放在弹出窗口上,弹出窗口在从“显示”按钮获取的坐标处打开。一点代码也有助于更好地理解它。坦率地说,没有太多。现在,如果该圆圈每次打开时都“粘住”到“显示”按钮,那就太好了。@GGrec查看更新后的答案。这个解决方案有点不方便,因为我需要舞台在屏幕上正确定位弹出窗口。然而,对于JavaFX中不存在的东西来说,这是一个合理的解决方案。谢谢