0

我使用 Ext-GWT 在小部件上设置了边框布局。有没有办法可以自动设置“拆分”位置?原因是,如果用户在页面上调整控件的大小(不一定是拆分小部件所在的父级),我想将拆分值设置为某个百分比值(如 30%)。如何才能做到这一点?

这是现有的代码:

import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.google.gwt.user.client.Element;

public class BorderLayoutExample extends LayoutContainer {  

  setSplitPositionTo(float percentage) {
  // TODO: How to do this?
  }

  protected void onRender(Element target, int index) {  
    super.onRender(target, index);  
    final BorderLayout layout = new BorderLayout();  
    setLayout(layout);  
    setStyleAttribute("padding", "10px");  

    ContentPanel west = new ContentPanel();  
    ContentPanel center = new ContentPanel();  

    //uncomment this section if you dont want to see headers
    /*
     * west.setHeaderVisible(false);
     * center.setHeaderVisible(false);
     */

    BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 150);  
    westData.setSplit(true);  
    westData.setCollapsible(true);  
    westData.setMargins(new Margins(0,5,0,0));  

    BorderLayoutData centerData = new BorderLayoutData(LayoutRegion.CENTER);  
    centerData.setMargins(new Margins(0));  

    add(west, westData);  
    add(center, centerData);  
  }  
}  
4

1 回答 1

1

这个相当棘手

您需要访问边框布局的非中心布局数据和小部件。(因为中心是通过剩余空间计算的)。然后使它们可用于 setSplitPositionTo 方法。

在我的例子中,我让他们成为班级成员。最后,我的方法如下所示,调用类似 myBorderLayoutInstance.setPlitPositionTo(0.4f); 使用您提供的示例和此修正案就像一个魅力。

BorderLayoutData westData;
ContentPanel west;

void setSplitPositionTo(float percentage) {
  westData.setSize(percentage);
  Component c = west;
  Map<String, Object> state = c.getState();
  state.put("size", westData.getSize());
  c.saveState();
  layout(true);
}
于 2010-10-07T05:38:52.660 回答