userrolefigure.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 78 行

JAVA
78
字号
package net.sf.freenote.uml.figure;

import net.sf.freenote.directedit.DirectEditable;

import org.eclipse.draw2d.BorderLayout;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.Shape;
import org.eclipse.draw2d.geometry.Rectangle;
/**
 * 用角的view
 * @author levin
 * @since 2008-1-29 下午07:12:21
 */
public class UserRoleFigure extends Figure implements DirectEditable{
	//人形图,上圆下大
	class PersonFigure extends Shape{
		@Override
		protected void fillShape(Graphics graphics) {
			Rectangle full = this.getBounds();
			int r=Math.min(full.height/6,full.width/2);
			int midX=full.x+full.width/2;
			//圆的rectangle
			Rectangle top=new Rectangle(midX-r,full.y,r*2,r*2);
			graphics.drawOval(top);
			//横竖线
			graphics.drawLine(midX, full.y+r*2, midX, full.y+r*4);
			graphics.drawLine(midX-r,full.y+r*3, midX+r, full.y+r*3);
			//斜线
			graphics.drawLine(midX, full.y+r*4, midX-r, full.y+r*6);
			graphics.drawLine(midX, full.y+r*4, midX+r, full.y+r*6);
		}

		@Override
		protected void outlineShape(Graphics graphics) {
		}
	}
	
	private PersonFigure person;
	private Label descLabel;
	
	public UserRoleFigure() {
		super();
		person=new PersonFigure();
		descLabel=new Label();
		BorderLayout layout = new BorderLayout();
		setLayoutManager(layout);
		setOpaque(true);
		add(person,BorderLayout.CENTER);
		add(descLabel,BorderLayout.BOTTOM);
	}

	@Override
	public String getDesc() {
		return descLabel.getText();
	}

	@Override
	public void setDesc(String desc) {
		descLabel.setText(desc);
	}

	@Override
	public void paint(Graphics graphics) {
		super.paint(graphics);
	}

	@Override
	protected void paintChildren(Graphics graphics) {
		super.paintChildren(graphics);
	}

	public Label getDescLabel() {
		return descLabel;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?