第一:我很震惊,我不得不问这个问题。在文档中没有任何地方它解释了应该如何使用新的“WindowManager”......我已经在这周围几个小时的黑客攻击了,我仍然没有像这样做一些微不足道的做法:
def vName = 'Error'
if (!app.views[vName]) { //I just want to create it once, otherwise I'd just change it's model and want to show() it!
buildMVCGroup(vName, vName, errorCode: 500, message: "fail detected ;-)") //ok, this indeed shows the idem (as it's an "frame(/**/show: true,/*...*/", but I dont want to create it each time
}
// app.windowManager.show(app.views.Error) //fails, show() want's an Window, and app.views.Error is of ErrorView type
// app.views.Error.visible = true //won't display the view
// app.views.Error.show() // there is no such method
我还需要一种很好的隐藏方式,例如:
//in controller
def view
def hideAction = {
//view.hide() //fails, no such method...
}
让我开心的另一种方式是“当用户点击OK(在ErrorView中),处理这个MVCGroup时的一种简单方法。我一直在搜索并阅读这些例子,但仍然不能弄清楚如何编写如此简单的应用程序流程嗯......
非常感谢您对如何做到这一点的任何想法, 欢呼声
答案 0 :(得分:4)
对于帧 - 我做过的......
在我看来,我提供了框架的名称
application(name: 'login', ...
然后在我的控制器中我做了
app.windowManager.hide(app.windowManager.findWindow('login'))
app.windowManager.show(app.windowManager.findWindow('workspace'))
所以...我确定我'命名'我的所有观点然后我可以轻松地显示/隐藏窗口管理器......
你对文档的权利。我希望我所做的就是“做正确的事情”。
答案 1 :(得分:2)
show()/ hide()是Groovy / Griffon中的语法糖,它在J2SE中处于某一点,但很久以来一直被弃用。
答案 2 :(得分:1)
好的,我找到了相当不错的解决方案:
application(/**/){
//...
myError = dialog(/**/){
//thats my error window
}
}
然后在控制器中我只是:
view.myError.visible = true
这样的事情非常优雅,希望它是“正确的事情”: - )
答案 3 :(得分:0)
另一个选择是为要显示的每个屏幕使用CardLayout。然后,您可以轻松显示/隐藏屏幕。这与个人卡的MigLayout相结合,效果非常好。