我可以看到如何实例化第二个 MVC 组,例如
def (loginPaneModel, loginPaneView, loginPaneController) =
createMVCGroup('LoginPane', 'LoginPane', [:]);
view.loginPanel = loginPaneView.loginPanel
但我不想显示为我的主窗口的一部分。我想让它弹出来。我该怎么做?谢谢!
好吧,似乎只需要第一行。这足以弹出一个窗口。不过,我相信关键是让视图成为一个框架。
def frame = frame(title:'Login', pack:true, locationByPlatform:true) {
...
}
frame.pack()
frame.show()
最简单的方法是使用视图面板作为父 MVC 组中对话框的根。在你的代码片段是你的控制器的组的视图中,你可以做这样的事情......
application(title:'your app', ....) {
// your existing code...
loginDialog = dialog(title:'Login Panel', visible:false) {
panel(loginPanel)
}
}
然后当你需要显示对话框时(在同一个控制器中)
view.loginDialog.visible = true
将对话框嵌套在另一个窗口中的副作用是将对话框的所有者设置为父级的框架或对话框。拥有另一个对话框/窗口拥有的对话框是导致对话框与父级链接并始终浮动在该父级之上的原因。它也将与父母一起提高/降低。