Cal*_*ips 3 java javafx filechooser
我的应用程序有一个主应用程序Stage,可以从中打开第二个窗口.我只想关注一个阶段.
我有2个问题需要解决:
1 - 如何focus打开only the second Stage(fileChooser OpenDialog)?即在用户点击"打开"或"取消"之前,我无法切换到主应用程序阶段.
2 - 我如何要求用户close the 2nd Stage before he can close the main Stage?
现在,我可以在第二阶段(OpenDialog)仍在运行时关闭主窗口.
谢谢.
subStage.initOwner(stage) - >确保子站与其所有者一起移动.
subStage.initModality(Modality.WINDOW_MODAL)- >确保substage阻止输入事件从其所有者(父)到其根目录传递到所有窗口.
Modality.APPLICATION_MODAL如果要阻止来自同一应用程序的所有窗口的输入事件,也可以使用它,除了来自其子层次结构的窗口.
默认情况下,对话框遵循模式和阻止方式.对话框的默认模式是Modality.APPLICATION_MODAL,您可以添加initOwner(...)它.
注意: 您不能将上述规则应用于FileChooser.但是,您可以使用showOpenDialog(Window ownerWindow)它.
fileChooser.showOpenDialog(stage);
Run Code Online (Sandbox Code Playgroud)
完整的例子
import javafx.application.Application;
import javafx.stage.Modality;
import javafx.stage.Stage;
public class Main extends Application {
@Override public void start(Stage stage) {
stage.setTitle("Main Stage");
stage.setWidth(500);
stage.setHeight(500);
stage.show();
Stage subStage = new Stage();
subStage.setTitle("Sub Stage");
subStage.setWidth(250);
subStage.setHeight(250);
subStage.initOwner(stage);
subStage.initModality(Modality.WINDOW_MODAL);
subStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5346 次 |
| 最近记录: |