AbsolutePanel 大小設定
Q:AbsolutePanel 如果在 CSS 加上 border,會導致 getWidgetLeft() 等無法取得正確值。
AbsolutePanel 裡頭必須先有實際的東西,才能設定大小。
//不會有效果
absolutePanel.setPixelSize(300,300);
absolutePanel.add(new Label("FOO"));
//有效果
absolutePanel.add(new Label("FOO"));
absolutePanel.setPixelSize(600,600);
UiBinder 掛 styleName 的隱憂
假設 Child.ui.xml 裡頭這樣寫
<g:HTMLPanel styleName="{style.inChild}" > <!-- blahblah --> </g:HTMLPanel>
而 Parent.ui.xml 裡頭這樣寫
<g:HTMLPanel>
<foo:Child styleName="{style.inParent}" />
<g:HTMLPanel>
實際上 Child 這個 widget 的 HTMLPanel 只會有 inParent 的 css 設定,而不會有任何 inChild 的 css 設定。
個人是比較建議 ui.xml 的 root widget 一律不准掛上 styleName 來解決這件事情。
UIBinder 繼承問題
Parent 這個 class 有作 uiBinder,Child extends Parent(有呼叫 super()),畫面顯示沒有問題,但是如果是在 Child 裡頭用 @UiHandler 掛上的 xxxHandler 則完全不會起作用。
Image 必須實際加到 DOM tree 才會觸發 onFoo()
//不會有效果
final Image = new Image("foo.png");
image.addLoadHandler(new LoadHandler(){
public void onLoad(LoadEvent event){
popupPanel.setWidget(image);
}
}
//有效果
final Image = new Image("foo.png");
image.addLoadHandler(new LoadHandler(){
public void onLoad(LoadEvent event){
}
}
popupPanel.setWidget(image);