5

第一:我很震惊我不得不问这个问题。文档中没有任何地方解释了应该如何使用新的“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 的简单方法。我今天已经搜索和阅读了一段时间的示例,但仍然无法弄清楚如何编写如此简单的应用程序流程嗯...

非常感谢您对如何做到这一点的任何想法,干杯

4

4 回答 4

4

对于框架 - 我所做的......

在我看来,我为框架提供了一个名称

application(name: 'login', ...

然后在我的控制器中我做

app.windowManager.hide(app.windowManager.findWindow('login')) app.windowManager.show(app.windowManager.findWindow('workspace'))

所以......我确保我'命名'我所有的视图,然后我可以轻松地使用窗口管理器显示/隐藏......

您对文档的权利。我希望我所做的也是“正确的事情”。

于 2011-03-01T15:31:56.293 回答
2

真的是。它调用大多数 JComponents 上的 setVisible 函数。

show()/hide() 是 Groovy/Griffon 中的语法糖,曾经在 J2SE 中出现过,但早已被弃用。

于 2010-12-05T15:13:40.760 回答
1

好的,我为此找到了很好的解决方案:

application(/**/){
  //...
  myError = dialog(/**/){
    //thats my error window
  }
}

然后在控制器中我只是:

view.myError.visible = true

这样的事情非常优雅,希望这是“正确的做法”:-)

于 2010-12-05T13:06:31.573 回答
0

另一种选择是为每个要显示的屏幕使用 CardLayout。然后您可以轻松地显示/隐藏屏幕。这与单个卡的 MigLayout 相结合,效果很好。

于 2011-11-28T13:51:50.000 回答