XYLayout就是采用绝对坐标来确定子figure的位置和大小。
/**
* Calculates and returns the preferred size of the input figure. Since in XYLayout the
* location of the child should be preserved, the preferred size would be a region which
* would hold all the children of the input figure. If no constraint is set, that child
* is ignored for calculation. If width and height are not positive, the preferred
* dimensions of the child are taken.
*/
所以用户至少要指定figure的位置,然后指定大小为负值,系统就会把用preferred size。
public class HelloWorld2 {
public static void main(String args[]) {
Shell shell = new Shell();
shell.setText("Draw2d Hello World");
shell.setSize(400, 400);
shell.open();
// create content 4 shell.
createContent4Shell(shell);
while (!shell.isDisposed ()) {
if (!Display.getDefault().readAndDispatch ())
Display.getDefault().sleep ();
}
}
private static void createContent4Shell(Shell shell) {
Panel rootFigure = new Panel();
rootFigure.setLayoutManager(new XYLayout());
for(int i=0; i<30; i++) {
rootFigure.add(new Label("Label "+i) ,new Rectangle(15*i,15*i,-1,-1));
}
LightweightSystem lws = new LightweightSystem(shell);
lws.setContents(rootFigure);
}
}