如何在使用 FXML 设置样式的 JavaFX 中创建内部弹出窗口
How to create an inner popup in JavaFX styled with FXML
我有一个 FXML 文件,我正在使用它来允许用户在收到请求时进行输入。现在我只是把它放在一个新的阶段并做 Stage.show()
。我不想让它出现在新的 window 中,而是表现得更像 ContextMenu
.
查看 ContextMenu
class 看来我无法根据 FXML 文件设置内容。有没有办法用 ContextMenu
或 Popup
或其他一些我不知道的 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
我有一个 FXML 文件,我正在使用它来允许用户在收到请求时进行输入。现在我只是把它放在一个新的阶段并做 Stage.show()
。我不想让它出现在新的 window 中,而是表现得更像 ContextMenu
.
查看 ContextMenu
class 看来我无法根据 FXML 文件设置内容。有没有办法用 ContextMenu
或 Popup
或其他一些我不知道的 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