【发布时间】:2017-07-13 23:49:32
【问题描述】:
我正在尝试解决 jdk 中的这个错误:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8088624
public class Blubb extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Button btn = new Button("Click");
btn.setTooltip(new Tooltip("Blubb"));
Scene scene = new Scene(new BorderPane(btn), 320, 240);
primaryStage.setScene(scene);
primaryStage.show();
Stage secondStage = new Stage();
secondStage.setScene(new Scene(new BorderPane(new Button("Click")), 320, 240));
//secondStage.initOwner(primaryStage);
secondStage.show();
}
}
如果一级舞台上的按钮悬停,它将出现在二级舞台的前面。我发现在舞台上调用initOwner() 可以消除这种行为。
现在我的问题如下:我有多个具有共同所有者(主要阶段)的“弹出窗口”。在 initOwner() 变通方法之后,将鼠标悬停在主要阶段上的控件上不会导致任何意外行为。但是,如果您在另一个弹出窗口处于焦点时将鼠标悬停在弹出窗口中的控件上,则悬停的弹出窗口将窃取焦点。
有没有一种方法可以解决这个错误,不仅适用于初级阶段,也适用于弹出窗口?
更新:原来我的解决方法有不良副作用。阶段状态的 Javadocs 如下:
舞台将始终位于其父窗口的顶部。
那么另外,有什么解决方法可以使弹出窗口不“始终位于顶部”和最小化?
【问题讨论】: