自定义弹窗,主要是获取控件元素的windows对象,窗口内容可以用FXML配置,如下:
/**
* 按钮事件:启动子窗口
* @throws IOException
*/
@FXML
private void onLogin(ActionEvent event) throws IOException {
Stage stage=(Stage) getWindow(event);
startSub(stage);
}
/**
* 启动子窗口
* @throws IOException
*/
public static void startSub(Window owner) throws IOException{
Stage stage=new Stage();
Parent root = FXMLLoader.load(new URL("xxx"),BundleUtils.bundle);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.initModality(Modality.WINDOW_MODAL);
//设置父窗口
stage.initOwner(owner);
stage.show();
}
/**
* 获取控件元素的窗口对象
* @param event
* @return
*/
public static Window getWindow(ActionEvent event){
return((Node)event.getSource()).getScene().getWindow();
}
/**
* 获取menuItem控件的窗口对象
* @param event
* @return
*/
public static Window getWindowFromMenu(ActionEvent event){
MenuItem menuItem=((MenuItem)event.getSource());
//转换成ContextMenu
ContextMenu cm=menuItem.getParentPopup();
return cm.getOwnerWindow();
}