2017-10-09 4 views
0

사용자가 클릭 할 때 GWT PopupPanel을 사용하여 버튼 위에 팝업을 표시하고 있습니다.GWT PopupPanel 잘못된 팝업 위치

나는 팝업의 위치를 ​​설정하고 그래서처럼 보여입니다 : 그것은 표시 후 나는 팝업의 최고 값을 검사 할 때

panel.setPopupPosition(leftPos, topPos); 
panel.show(); 

그러나, 나는 그것이 내가 할당 된 것보다 위치 약간 낮은 것을 알 수있다.

문제는 setPopupPosition가 전달되는 값으로 변경하는 것이 될 수있다 :

// Account for the difference between absolute position and the 
// body's positioning context. 
left -= Document.get().getBodyOffsetLeft(); 
top -= Document.get().getBodyOffsetTop(); 

가 어떻게이 GWT PopupPanel의 위치가 내가 준 정확하게 값이 있는지 확인 할 수 있습니다? setPopupPosition()은 실제로 위치를 설정하는 유일한 방법 인 것처럼 보이지만 전달하는 위치에 대한 일부 조작 (사용 사례에서는 불필요)을 수행합니다.

+0

당신은 팝업의 DOM 요소의 스타일에 직접 액세스 할 수 있습니다 - 예를 PopupPanel.getElement(). getStyle(). setPropertyPx ("top", topPos); –

+0

Ahh, 나는 그것을 시도했지만, 작동하지 않았다. (팝업은 0,0으로 나타났다.) 키는'show()'를 호출 한 후에 그 속성을 설정하는 것이다. 이것은'show()'를 호출 한 후 위치를 설정할 때 팝업이 "점프"하는 것을 보지 못하기 때문에 작동하지만, 사용하지 않고'show()'를 호출하기 전에 위치를 설정하는 방법이 있는지 궁금합니다. 'setPopupPosition()'? 자유롭게 의견을 말하십시오 ('show()'를 부르신 후 반드시해야 함) 받아 들일 것입니다. – OMGitzMidgar

+0

답변을 추가했습니다. –

답변

0

PopupPanel을 조정하기 위해 팝업 요소의 DOM 요소에 직접 액세스 할 수 있습니다 위치. 하지만 은 show()를 호출하고 팝업을 표시하기 전에을 수행해야합니다. 그렇지 않으면 "점프"효과가 나타날 수 있습니다. 예 :

PopupPanel popupPanel = new PopupPanel(); 
... 
// this callback will be called after PopupPanel.show(), but before it is shown 
popupPanel.setPopupPositionAndShow(new PositionCallback() { 
    @Override 
    public void setPosition(int offsetWidth, int offsetHeight) { 
     Style style = popupPanel.getElement().getStyle(); 
     style.setLeft(100, Unit.PX); 
     style.setTop(100, Unit.PX); 
    } 
});