使用 Modality.Application_MODAL
从 javafx.stage.Stage
扩展的类导致应用程序(有时也是操作系统)挂起不可预测的时间。
我有课
ModalDialog extends Stage{
ModalDialog(){
super(StageStyle.TRANSPARENT);
initModality(Modality.APPLICATION_MODAL);
}
}
在调用上述类的实例的 showAndWait() 时,应用会挂起一段不可预测的时间。这发生在 Ubuntu Linux 13.10 上。
jconsole
显示 JavaFX-ApplicationThread
的堆栈跟踪是:
com.sun.glass.ui.gtk.GtkApplication.enterNestedEventLoopImpl(Native Method)
com.sun.glass.ui.gtk.GtkApplication._enterNestedEventLoop(GtkApplication.java:144)
com.sun.glass.ui.Application.enterNestedEventLoop(Application.java:384)
com.sun.glass.ui.EventLoop.enter(EventLoop.java:83)
com.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(QuantumToolkit.java:523)
javafx.stage.Stage.showAndWait(Stage.java:398)
是否有针对此行为的已知解释?
最佳答案
最好为对话框设置一个intiOwner,让系统知道你的对话框的父框架。这使得对话框对父框架是模态的,而不是什么都不是模态的。我认为这可以解决您的问题。
ModalDialog extends Stage{
ModalDialog(Stage parentStage){
super(StageStyle.Transparent);
initOwner(parentStage);
initModality(Modality.Application_Modal);
}
应该这样做
关于java - javafx 上的模态对话框意外挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21551141/