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

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

BorderLayout(Draw2D/GEF - Java Eclipse)

おなじみのBorderLayoutです。Figureの位置を上・下・左・右・中央から選びます。

レイアウトの位置は、親Figureに追加時に、BorderLayout.TOP 等をConstantsの引数の位置へ渡します。

Constantsを追加しないとレイアウトが機能しません。

機能

水平・垂直のスペース

setHorizontalSpacing(int space);

setVerticalSpacing(int space)

にて指定可能


5箇所に追加

		BorderLayout layout=new BorderLayout();
		
		panel.setLayoutManager(layout);
		
		set(panel,"top",BorderLayout.TOP);
		set(panel,"bottom",BorderLayout.BOTTOM);
		set(panel,"center",BorderLayout.CENTER);
		set(panel,"left",BorderLayout.LEFT);
		set(panel,"right",BorderLayout.RIGHT);

5箇所に追加・スペース指定

水平には20pixel・垂直には10pixelスペースを空けるよう指定

		BorderLayout layout=new BorderLayout();
		layout.setHorizontalSpacing(20);
		layout.setVerticalSpacing(10);
		
		panel.setLayoutManager(layout);
		--略--

3箇所に追加

上・左・中央に追加した場合

コード全文

GEFに含まれるdraw2d.jarが必要です。

コードはCVSからダウンロードできます。


/*
 * Created on 2005/08/02
 * Author aki@www.xucker.jpn.org
 * License Apache2.0 or Common Public License
 */
package example.draw2d.first;

import org.eclipse.draw2d.BorderLayout;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.draw2d.Panel;
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 BorderLayoutTest {

    public BorderLayoutTest(Shell shell) {
        
		shell.setBounds(0,0,150,150);
		shell.setLayout(new FillLayout(SWT.VERTICAL));
		
		FigureCanvas canvas = new FigureCanvas(shell);
		Panel panel=new Panel();
		panel.setBackgroundColor(ColorConstants.orange);
		canvas.setContents(panel);
		
		BorderLayout layout=new BorderLayout();
		layout.setHorizontalSpacing(20);
		layout.setVerticalSpacing(10);
		
		panel.setLayoutManager(layout);
		
		set(panel,"top",BorderLayout.TOP);
		set(panel,"bottom",BorderLayout.BOTTOM);
		set(panel,"center",BorderLayout.CENTER);
		set(panel,"left",BorderLayout.LEFT);
		set(panel,"right",BorderLayout.RIGHT);
		
		
    }
    public void set(Figure parent,String label,Object constants){
        Label labelFigure=new Label(label);
        labelFigure.setBorder(new LineBorder());
        parent.add(labelFigure,constants);
    }
    
	public static void main(String[] args) {
		Display display=new Display();
		Shell shell=new Shell(display);
		
		
		BorderLayoutTest app=new BorderLayoutTest(shell);
		
		
		shell.open();
		
		while(!shell.isDisposed()){			
			if (!display.readAndDispatch ()){
					display.sleep ();
				  }
		}
		display.dispose();
	}
}

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