Node下的JavaFX Popup

时间:2014-03-25 10:38:44

标签: java javafx javafx-2 javafx-8

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

1 个答案:

答案 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的偏移来设置其位置。