我想用这样的代码在Composite上绘制一个顶部边框:
final Composite c = new Composite(parent, SWT.NONE);
c.setLayout(new FormLayout());
c.addPaintListener(new PaintListener(){
@Override
public void paintControl(PaintEvent e) {
int x = c.getBounds().x;
int y = c.getBounds().y;
e.gc.setForeground(SWTResourceManager.getColor(0));
e.gc.drawLine(x, y-23, x + c.getBounds().width, y-23);
}
});
但是如何让边框具有相同的外观和感觉作为默认边框?以及如何获得复合材料的正确Y坐标?
我希望复合材料只有一个顶部边框,还有其他方法吗?
答案 0 :(得分:2)
检查Detect system settings snippet,其中显示了如何获得系统颜色。
在你的情况下
Color borderColor = display.getSystemColor(SWT.COLOR_WIDGET_BORDER);
答案 1 :(得分:1)
1)
您可以使用3个复合材料。 1复合材料,其中2个放置。
像:
MainComposite
2)
您可以使用LayoutData作为内部Composite,并使用间距信息。但是你会在顶部和底部看到父综合。
看看
答案 2 :(得分:1)
这是一个非常重要的问题: - )
查看Eclipse中的UIForms - 尤其是org.eclipse.ui.forms.widgets.FormToolkit.BorderPainter
...