在我的应用程序中,我有几个独立的(非模态)舞台。
我希望实现以下行为:
有没有关于如何实现第三个要求的想法?
我希望实现以下行为:
- 当主舞台被最小化时,所有其他舞台也应该被最小化
- 当主舞台被取消最小化时,所有其他舞台也应该被取消最小化
- 当选择任何一个舞台时,如果其他一些舞台不可见(例如隐藏在其他应用程序后面),它们应该被置于前台
mainStage.iconifiedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null && newValue != oldValue) {
for (Stage s : otherStages) { s.setIconified(newValue); }
}
});
然而,我遇到了第三个问题。我尝试使用focusedProperty
,但它不起作用(如果我在其中一个舞台中点击菜单,例如,因为它首先将其他舞台置于前面,它就失去了焦点,菜单也不会打开)...
//do this for each stage
stage.focusedProperty().addListener((observable, oldValue, newValue) -> {
if (Boolean.TRUE.equals(newValue) && newValue != oldValue) {
for (Stage s : otherStages) {
s.setIconified(false);
s.toFront();
}
//request the focus back, but that creates issues
stage.requestFocus();
}
});
有没有关于如何实现第三个要求的想法?