Aboslute 布局暂存….
- February 25th, 2006
- in Learning Notes
暂存,待整理!
定义座标作为限制(x,y) and (w,h) coordinates:
[CODE_LITE]
private int x, y, width, height;
public static final int ADAPT = -1;
public XYConstraints(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
[/CODE_LITE]
适应常数可能被使用为宽度和高度以便布局经理使用宽度并且高度定义由组分(got from get…..Size()).必须实施LayoutManager2 和所有方法被定义:
首先我们假设我们的布局不需要任何特别对准线, 对上部左角落总将被排列:
[CODE_LITE]
public float getLayoutAlignmentX(Container arg0) {
return 0;
}
public float getLayoutAlignmentY(Container arg0) {
return 0;
}
[/CODE_LITE]
1) 审阅所有分组和增加他们的X 和W 座标和Y 和H 座标。
2) 如果分组使用适应常数, 使用对应的方法在分组(得到..大小) 。
[B]E.g. the getPreferredSize method:[/B]
[CODE_LITE]
public Dimension preferredLayoutSize(Container arg0) {
int rightBound = 0;
int bottomBound = 0;
for (Iterator iter = constraints.keySet().iterator(); iter.hasNext();) {
Component comp = (Component) iter.next();
XYConstraints constraint = (XYConstraints) constraints.get(comp);
Dimension size = comp.getPreferredSize();
int width = constraint.getWidth();
if (width == XYConstraints.ADAPT) {
width = size.width;
}
if ((constraint.getX() + width) > rightBound) {
rightBound = constraint.getX() + width;
}
int height = constraint.getHeight();
if (height == XYConstraints.ADAPT) {
height = size.height;
}
if ((constraint.getY() + height) > bottomBound) {
bottomBound = constraint.getX() + height;
}
}
return new Dimension(rightBound, bottomBound);
}
[/CODE_LITE]
因为我们不存储什么, 我们不需要实施其它的invalidateLayout:
[CODE_LITE]
public void invalidateLayout(Container arg0) {
// No information cached
}
[/CODE_LITE]
现在我们来到有趣的部份,首先我们需要实施方法增加分组以限制来布局。
有二个方法: 一以限制代表作为对象和其他作为串。 串一个, 我们将解码串对对象和将要求第一方法:
[CODE_LITE]
public void addLayoutComponent(String constraintString, Component component) {
XYConstraints constraint = new XYConstraints(0, 0, XYConstraints.ADAPT, XYConstraints.ADAPT);
String[] args = constraintString.split(”;”);
for (int i = 0; i
暂存,待整理!
定义座标作为限制(x,y) and (w,h) coordinates:
[CODE_LITE]
private int x, y, width, height;
public static final int ADAPT = -1;
public XYConstraints(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
[/CODE_LITE]
适应常数可能被使用为宽度和高度以便布局经理使用宽度并且高度定义由组分(got from get…..Size()).必须实施LayoutManager2 和所有方法被定义:
首先我们假设我们的布局不需要任何特别对准线, 对上部左角落总将被排列:
[CODE_LITE]
public float getLayoutAlignmentX(Container arg0) {
return 0;
}
public float getLayoutAlignmentY(Container arg0) {
return 0;
}
[/CODE_LITE]
1) 审阅所有分组和增加他们的X 和W 座标和Y 和H 座标。
2) 如果分组使用适应常数, 使用对应的方法在分组(得到..大小) 。
[B]E.g. the getPreferredSize method:[/B]
[CODE_LITE]
public Dimension preferredLayoutSize(Container arg0) {
int rightBound = 0;
int bottomBound = 0;
for (Iterator iter = constraints.keySet().iterator(); iter.hasNext();) {
Component comp = (Component) iter.next();
XYConstraints constraint = (XYConstraints) constraints.get(comp);
Dimension size = comp.getPreferredSize();
int width = constraint.getWidth();
if (width == XYConstraints.ADAPT) {
width = size.width;
}
if ((constraint.getX() + width) > rightBound) {
rightBound = constraint.getX() + width;
}
int height = constraint.getHeight();
if (height == XYConstraints.ADAPT) {
height = size.height;
}
if ((constraint.getY() + height) > bottomBound) {
bottomBound = constraint.getX() + height;
}
}
return new Dimension(rightBound, bottomBound);
}
[/CODE_LITE]
因为我们不存储什么, 我们不需要实施其它的invalidateLayout:
[CODE_LITE]
public void invalidateLayout(Container arg0) {
// No information cached
}
[/CODE_LITE]
现在我们来到有趣的部份,首先我们需要实施方法增加分组以限制来布局。
有二个方法: 一以限制代表作为对象和其他作为串。 串一个, 我们将解码串对对象和将要求第一方法:
[CODE_LITE]
public void addLayoutComponent(String constraintString, Component component) {
XYConstraints constraint = new XYConstraints(0, 0, XYConstraints.ADAPT, XYConstraints.ADAPT);
String[] args = constraintString.split(”;”);
for (int i = 0; i
