关键字:Draw2d、布局管理器、约束(Constraint)
Draw2d中的布局管理器和约束是一一对应的,也就是说不同的布局管理对应不同的约束。
XYLayout
|
Rectangle
|
new Rectangle(10,10,-1,-1) |
BorderLayout
| Integer |
BorderLayout.CENTER
|
FlowLayout | 无 | |
StackLayout | 无 | |
GridLayout | GridData | new GridData(10,10) |
从哪里看出布局管理器和约束的对应关系。
XYLayout
public class XYLayout
extends AbstractLayout {
...
public void layout(IFigure parent) {
...
Rectangle bounds = (Rectangle)getConstraint(f);
...
}
BorderLayout
public class BorderLayout
extends AbstractHintLayout
{
......
public void setConstraint(IFigure child, Object constraint) {
......
switch (((Integer) constraint).intValue()) {
.....
}
GridLayout
public class GridLayout extends AbstractLayout {
.......
Dimension layout(IFigure container, boolean move, int x, int y, int width,
int height, boolean flushCache) {
.....
GridData data = (GridData) getConstraint(child);
.....
}
对于布局管理器的理解,其实就是要抓住一个重点那就是,它是用来管理子figure是如何放置的。