アキはフリーランスのプログラマーです >> Java >> Eclipse
Sponsored link

このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース

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

このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース