Gwt 如何在GXT中以编程方式设置BorderLayout的拆分位置?
我使用extgwt在小部件上设置了边框布局。有没有办法自动设置“拆分”位置?原因是,如果用户调整页面上控件的大小(不一定是拆分小部件所在控件的父控件),我希望将拆分值设置为某个百分比值(如30%)。如何做到这一点 以下是现有代码:Gwt 如何在GXT中以编程方式设置BorderLayout的拆分位置?,gwt,widget,gxt,splitpanel,Gwt,Widget,Gxt,Splitpanel,我使用extgwt在小部件上设置了边框布局。有没有办法自动设置“拆分”位置?原因是,如果用户调整页面上控件的大小(不一定是拆分小部件所在控件的父控件),我希望将拆分值设置为某个百分比值(如30%)。如何做到这一点 以下是现有代码: import com.extjs.gxt.ui.client.Style.LayoutRegion; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.widget.
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);
}
}
这个相当棘手 您需要访问非中心布局数据和用于边框布局的小部件。 (因为中心是通过剩余空间计算的)。 然后使它们可用于setPlitPositionTo方法 在我的例子中,我让他们成为班上的成员。 最后,我的方法如下所示,调用类似于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);
}
BorderLayoutData-westData;
内容面板西部;
void setPlitPositionTo(浮动百分比){
westData.setSize(百分比);
c部分=西部;
映射状态=c.getState();
state.put(“size”,westData.getSize());
c、 saveState();
布局(真实);
}