我想在DockLayoutPanel中放置一個小部件(複合),我希望它位於 中心(垂直和水平方向)。不使用uibinder。怎麼做?在DockLayoutPanel中居中放置一個小部件
0
A
回答
1
請注意,在佈局DockLayoutPanel時,「center」的UIBinder表示法並不是指在面板中物理居中的小部件,而是指佔用包含面板中未被這些小部件使用的所有空間的中心小部件雙方。即在下面的佈局中,小部件C是「中心」面板,即使它一直流到其容器的右側。
<g:DockLayoutPanel>
<g:north><g:Label>A</g:Label></g:north>
<g:west><g:Label>B</g:Label></g:north>
<g:center><g:Label>C</g:Label></g:center>
<g:south><g:Label>D</g:Label></g:south>
</g:DockLayoutPanel>
----------------
| A |
----------------
|B| C |
----------------
| D |
----------------
如果你是一個孩子「中心」窗口小部件添加到DockLayoutPanel它會佔用在面板中的所有縱橫時空 - 它不會居中。
如果要實現使用絕對定位佈局面板,我建議的一個物理中心只是用LayoutPanel:
LayoutPanel panel = new LayoutPanel();
MyWidget myWidget = new MyWidget();
panel.add(myWidget);
// Note that this assumes that both widgets are attached and have meaningful
// sizes - use the RequiresResize interface to get notification of when the
// positioning of myWidget needs change. Note also that if panel or myWidget
// have any decoration that modifies its offsetWidth (margin, border, padding)
// that will need to be taken into account to correctly center myWidget.
int top = panel.getOffsetHeight() - (myWidget.getOffsetHeight()/2);
int left = panel.getOffsetWidth() - (myWidget.getOffsetWidth()/2);
panel.setWidgetTopHeight(myWidget, top, Unit.PX, myWidget.getOffsetHeight(), Unit.PX);
panel.setWidgetLeftWidth(myWidget, left, Unit.PX, myWidget.getOffsetWidth(), Unit.px);
0
的問題是,除非你做的假設,該窗口將無法調整它不是可以在沒有WindowResizeHandler的情況下在LayoutPanel中解決此問題,但可以通過表格輕鬆解決。
DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
// some code here
Button button = new Button("center");
FlexTable wrapper = new FlexTable();
wrapper.setSize("100%", "100%");
wrapper.setWidget(0, 0, button);
wrapper.getFlexCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE);
wrapper.getFlexCellFormatter().setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER);
dockLayoutPanel.add(wrapper);
+0
當使用基於絕對定位的LayoutPanels時,處理窗口大小的首選方法是使用RequiresResize和ProvideResize接口。 – 2010-12-23 00:36:40
相關問題
- 1. 在頁腳小部件中居中放置圖像
- 2. 如何在三個「列」設置中居中放置小部件區域
- 3. 在ListBox.ItemTemplate中居中放置一個TextBlock
- 4. 在CSS中居中放置一個框
- 5. 如何在一個小部件中放置多個字體
- 6. 在DIV頂部放置一個圖像並居中
- 7. 如何在Tkinter中垂直放置一個小部件?
- 8. 在SWT的背景中放置一個小部件
- 9. 覆蓋gwt DockLayoutPanel小部件的溢出
- 10. 如何在另一箇中放置一個居中的圓?
- 11. 如何在DockLayoutPanel中顯示和隱藏小部件?
- 12. 如何將小部件放置在Tkinter的Canvas小部件中?
- 13. 如何在swt中放置一個小部件並在同一個地方再次創建該小部件?
- 14. 在一個div中居中放置一段文本
- 15. 如何將這個div居中放置在一個區域中?
- 16. 在文本下居中放置一條小線
- 17. 如何在縮放後居中放置一個div
- 18. 位置一個小部件在另一個頁腳,在wordpress中?
- 19. 以100%寬度在背景中居中放置一個div
- 20. 在畫框中居中放置一個矩形文字
- 21. 在CSS中居中放置一個DIV元素
- 22. 如何在Flutter中居中放置一個ListTile的標題
- 23. 在其框架中居中放置一個UIButton標題
- 24. 你如何在div中垂直居中放置一個div?
- 25. 在div中垂直居中放置一個圖像
- 26. 在手風琴面板中居中放置一個自舉表
- 27. 在TableLayout中的ImageView下居中放置一個TextView
- 28. 在Highcharts條形圖中居中放置一個數據標籤
- 29. 在頁腳中居中放置一個元素?
- 30. 如何使用fieldset在div中居中放置一個窗體?
我不想使用uiBinder ..我會嘗試使用LayoutPanel。 – Sunil 2010-12-23 11:17:02