Sponsored link
FlowLayout(Draw2D/GEF - Java Eclipse)
FlowLayoutは縦や横方向に順番に並べていきます。
ただし、FlowLayoutは場合によって折り返します。
設定項目
MinorSpacingとMajorSpacing
MinorSpacingとは、レイアウトの方向のFigureとFigureとの間のスペースです。
MajorSpacingとは、レイアウトの方向とは逆側のFigure列とFigure列とのスペースです。
横方向のFlowLayoutの場合
MinorAlign
MinorAlignとは列に異なる幅や高さのFigureが来た場合の配置を指定します。
デフォルトでは、左又は上になります。
横方向のFlowLayoutの場合
MajorAlign
MajorAlignとは配置したときに、あまりに対してのレイアウトです。
デフォルトでは、左又は上になります。
横方向のFlowLayoutの場合
StretchMinorAxis
列に異なる幅や高さのFigureが来た場合に、短いのを長いのに合わせるかどうかです。
これをtrue(合わせる)にすると、当然ながら、MinorAlignは意味はありません。
横方向のFlowLayoutの場合
例
単純なXYLayout
FlowLayoutはそのまま追加するだけでいいです。
for(int i=0;i<6;i++){ Label labelFigure=new Label("label "+i); labelFigure.setBorder(new LineBorder()); panel.add(labelFigure); }
コード全文
GEFに含まれるdraw2d.jarが必要です。
コードはCVSからダウンロードできます。
package example.draw2d; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.FigureCanvas; import org.eclipse.draw2d.FlowLayout; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.LineBorder; import org.eclipse.draw2d.Panel; import org.eclipse.draw2d.RectangleFigure; import org.eclipse.draw2d.ToolbarLayout; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class FlowLayoutTest { public FlowLayoutTest(Shell shell) { shell.setBounds(0,0,210,150); shell.setLayout(new FillLayout(SWT.VERTICAL)); FigureCanvas canvas = new FigureCanvas(shell); Figure root=new Figure(); Panel panel=new Panel(); panel.setBackgroundColor(ColorConstants.orange); panel.setSize(200,200); canvas.setContents(root); root.add(panel); FlowLayout layout=new FlowLayout(true); layout.setMinorSpacing(10); layout.setMajorSpacing(40); layout.setMinorAlignment(FlowLayout.ALIGN_CENTER); layout.setMajorAlignment(FlowLayout.ALIGN_CENTER); layout.setStretchMinorAxis(false); panel.setLayoutManager(layout); for(int i=0;i<6;i++){ Label labelFigure=new Label("label "+i); labelFigure.setBorder(new LineBorder()); panel.add(labelFigure); } RectangleFigure rf=new RectangleFigure(); rf.setSize(40,40); panel.add(rf); } public static void main(String[] args) { Display display=new Display(); Shell shell=new Shell(display); FlowLayoutTest app=new FlowLayoutTest(shell); shell.open(); while(!shell.isDisposed()){ if (!display.readAndDispatch ()){ display.sleep (); } } display.dispose(); } }