如何在使用 FXML 设置样式的 JavaFX 中创建内部弹出窗口

How to create an inner popup in JavaFX styled with FXML

我有一个 FXML 文件,我正在使用它来允许用户在收到请求时进行输入。现在我只是把它放在一个新的阶段并做 Stage.show()。我不想让它出现在新的 window 中,而是表现得更像 ContextMenu.

查看 ContextMenu class 看来我无法根据 FXML 文件设置内容。有没有办法用 ContextMenuPopup 或其他一些我不知道的 class 来做到这一点?

ControlsFX 有一个您可能会喜欢的 PopOver 控件。 PopOver 可以使用任何节点作为其内容,因此您可以简单地创建一个弹出窗口,从 FXML 加载一个节点并将弹出窗口的内容设置为该节点。

尽管该库非常好,但我想要一些不需要第三方下载的简单内容。我想到了这个:

Popup popup = new Popup();
CustomController controller = new CustomController();
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlfile));
loader.setController(controller);
popup.getContent().add((Parent)loader.load());

问题是我没有意识到 Parent 可以被认为是方法 Popup#getContent#add

Node