2011-09-20 26 views
0

我有這樣的代碼如何來包裝標籤,並給他們留下右對齊

HorizontalPanel hp = new HorizontalPanel(); 
hp.setWith("100%"); 
hp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); 
hp.add(new Label("label 1")); 
hp.add(new Anchor("anchor 1")); 
hp.add(new Label("label 2")); 
hp.add(new Anchor("Anchor 2")); 
RootPanel.get().add(hp); 

其實這顯示

LABEL1 ............... ............................ anchor1 ..................... ................. LABEL2 ................................ ..anchor2

我其實想要類似

LABEL1 anchor1 LABEL2 anchor2

是否有針對或其他解決方案的佈局? thx

+0

這會工作,如果你不把你的水平面板寬度設置爲任何東西 – pistolPanties

回答

0

你可以把你的HorizontalPanel,但試試這個:

HorizontalPanel hp = new HorizontalPanel(); 
hp.setHorizontalAlignment(HasAlignment.ALIGN_LEFT); 
hp.setSpacing(2); // 2 = number of pixels between each item 
hp.add(new Label("label 1")); 
hp.add(new Anchor("anchor 1")); 
hp.add(new Label("label 2")); 
hp.add(new Anchor("Anchor 2")); 
RootPanel.get().add(hp); 

你真正需要的是一個setSpacing屬性,因此他們不是字面上連接到下一個單元格在你的hp,並刪除hp.setWidth("100%")。如果你在UiBinder中這樣做,你可以保持100%的寬度,並獨立設置每個<g:cell>的寬度,從而提供更大的靈活性。

另外,我建議你使用HasAlignment超過HasHorizontalAlignment和/或HasVerticalAlignment,如果沒有其他原因,而不是HasAlignment移植到所有類型的面板。

0

嘗試FlowPanel。它只是從左到右添加小部件,沒有間距,並在行尾添加換行。

也許我錯過了一些東西。還有什麼更多的佈局,你想要的?

+0

我更新了我的問題,因爲使用FlowPanel,我可以水平標記,但是當我添加Anchor和Label時,它垂直顯示元素 – outellou

+0

設置您的元素顯示爲內聯應解決顯示垂直問題。例如; 'label.getElement()。getStyle()。setDisplay(Display.INLINE);' – pistolPanties

+0

由pistolPanties給出的解決方案爲我工作,我把樣式放入一個CSS .div_horizo​​ntal \t display:inline; } – outellou

相關問題