Javafx JFX:在另一个阶段的顶部锁定一个阶段/检测阶段顺序
假设我有三个Java FX阶段:A、B和C。每个阶段都有自己的打开窗口,我的目标是实现以下行为: 如果A聚焦,B应该出现在B->A-B-C的顶部,C应该出现在B->A-B-C的顶部 如果B正在对焦,Be应该出现在C的前面,A出现在后面->A-C-B 如果C正在聚焦,自然->A-B-C 我知道toFront功能,并尝试手动执行相应的命令,只要在其中一个阶段重新聚焦时以正确的顺序调用每个阶段的toFront,就会导致不希望的闪烁,因为显然无法确定哪些窗口已经在正确的位置 不幸的是,我不能使用模态窗口系统,因为所有窗口都需要保持并行运行 有没有办法做到这一点 万分感谢 也有同样的问题。 我能找到的唯一方法是存储阶段获得焦点的顺序,然后以相反的顺序遍历所有阶段并调用.toFront 每当一个阶段获得焦点,我就把它放在开放阶段列表的顶部。 然后我全局阻止EventHandler,因为每次阶段接收到.toFont调用时,它也会获得焦点 在Mac上运行良好。 在Windows下不工作并显示奇怪的行为Javafx JFX:在另一个阶段的顶部锁定一个阶段/检测阶段顺序,javafx,stage,Javafx,Stage,假设我有三个Java FX阶段:A、B和C。每个阶段都有自己的打开窗口,我的目标是实现以下行为: 如果A聚焦,B应该出现在B->A-B-C的顶部,C应该出现在B->A-B-C的顶部 如果B正在对焦,Be应该出现在C的前面,A出现在后面->A-C-B 如果C正在聚焦,自然->A-B-C 我知道toFront功能,并尝试手动执行相应的命令,只要在其中一个阶段重新聚焦时以正确的顺序调用每个阶段的toFront,就会导致不希望的闪烁,因为显然无法确定哪些窗口已经在正确的位置 不幸的是,我不能使用模态窗口
this.model.stage.focusedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) -> {
if (!mainModel.blockFocusRequest){
if (t1){
try{
mainModel.openWindows.remove(this.model.stage);
mainModel.openWindows.add(0,this.model.stage);
mainModel.blockFocusRequest = true;
for (int i=mainModel.openWindows.size()-1;i>=0;i--){
mainModel.openWindows.get(i).toFront();
}
} finally{
mainModel.blockFocusRequest = false;
}
}
}
});