2010-12-05 4 views
5

첫 번째 :이 질문을해야한다는 것에 놀랐습니다. 문서의 어디에도 새로운 "WindowManager"가 어떻게 사용되어야하는지 설명되어 있습니다 ... 저는이 문제를 둘러싼 몇 시간 쯤 해킹을 해왔습니다. 아직까지는 이렇게 사소한 일을하는 것이 적절하지 않습니다.Griffon에서보기를 쉽게 표시하거나 숨기려면 어떻게합니까?

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... 
} 

또 다른 방법은, "사용자가 ErrorView에 (OK 클릭하면"이 처분 할 수있는 쉬운 방법입니다 MVCGroup. 내가 오늘 검색하고 예제를 꽤 오랜 시간 동안 읽었지만 여전히 쉬운 응용 프로그램 흐름을 코드하는 방법을 알아낼 수 없습니다. ...

답변

1

확인이 작업을 수행하는 방법에 대한 어떤 생각에 미리개

많은 감사, 환호

, 나는 이것에 대한 아주 좋은 해결책을 발견 :

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

을 그리고 컨트롤러의 난 그냥 좋겠 :

view.myError.visible = true 

그것은 이러한 일에 매우 우아, 그것은 :-)

2

그것은이다 "옳은 일을 할"희망 과연. 대부분의 JComponents에있는 setVisible 함수를 호출합니다.

show()/hide()는 J2SE의 한 지점에 있지만 오랫동안 사용되지 않은 Groovy/Griffon의 구문 설탕입니다.

프레임
+0

의견을 보내 주셔서 감사합니다. ecspike :-) –

4

- 내보기에 내가 무슨 짓을했는지 ...

나는 프레임의 이름을 제공

application(name: 'login', ...

그런 다음 내 컨트롤러에서 나는

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

그래서 ... 전 내 의견을 모두 '이름을지었습니다'라고 확신하고 있습니다. 그러면 창 관리자와 함께 쉽게 표시/숨길 수 있습니다 ...

문서에 관한 귀하의 권리. 내가하고있는 일이 "옳은 일"이기를 바라고 있습니다.

0

또 다른 옵션은 표시하려는 각 화면마다 CardLayout을 사용하는 것입니다. 그러면 화면을 쉽게 표시하거나 숨길 수 있습니다. 그것은 개별 카드를위한 MigLayout과 결합되어 꽤 잘 작동합니다.