draw2d 使用心得

可以不用显式创建lightweightsystem类就可以展现图形。层次结构:Display ->Shell->FigureCanvas->Figures(需要展现的Figure),代码框架见最后的代码示例。

其中特别需要注意的是,如果FigureCanvas没有指定大小(setSize()),其包括的图形不会正常展现。怀疑是没有建立坐标,无法画出子图。

另外很奇怪的一点,如果在上面的content使用LayeredPane,再用Layer添加Figure,图形无法正常展现。这个改天再研究一下,代码如下:

package org.eclipse.draw2d.examples.connections;

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Layer;
import org.eclipse.draw2d.LayeredPane;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Mytest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Display d = Display.getDefault();
		Shell shell = new Shell(d, SWT.SHELL_TRIM);
		shell.setText("dingf");
		FigureCanvas fc = new FigureCanvas(shell);
		fc.setSize(600, 600);
		IFigure content = new Figure();

		LayeredPane lp = new LayeredPane();
		Layer l = new Layer();

		content.add(lp);
		content.setOpaque(false);
		// l.setForegroundColor(ColorConstants.blue);
		RectangleFigure rf = new RectangleFigure();
		rf.setBorder(new LineBorder(5));
		rf.setBounds(new Rectangle(10, 10, 100, 100));
		rf.setForegroundColor(ColorConstants.blue);
		rf.setVisible(true);
		rf.setValid(true);
		l.add(rf);
		// lp.setBounds(rf.getBounds());
		lp.add(l);
		// lp.setLayoutManager(new FreeformLayout());
		fc.setContents(content);
		fc.getViewport().setContentsTracksHeight(true);
		fc.getViewport().setContentsTracksWidth(true);
		shell.pack();
		shell.open();

		while (!shell.isDisposed())
			while (!d.readAndDispatch())
				d.sleep();
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值