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); } }