SWt:Control的边框颜色是什么?

时间:2011-08-08 04:02:23

标签: swt

我想用这样的代码在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坐标?

我希望复合材料只有一个顶部边框,还有其他方法吗?

3 个答案:

答案 0 :(得分:2)

检查Detect system settings snippet,其中显示了如何获得系统颜色。

在你的情况下

Color borderColor = display.getSystemColor(SWT.COLOR_WIDGET_BORDER);

答案 1 :(得分:1)

1)

您可以使用3个复合材料。 1复合材料,其中2个放置。

像:

MainComposite

  • TopComposite(边界非常小)
  • CenterComposite(其中放置了您的信息)

2)

您可以使用LayoutData作为内部Composite,并使用间距信息。但是你会在顶部和底部看到父综合。

看看

  • GridData.verticalIndent
  • GridData.heightHint

答案 2 :(得分:1)

这是一个非常重要的问题: - )

查看Eclipse中的UIForms - 尤其是org.eclipse.ui.forms.widgets.FormToolkit.BorderPainter ...