如何用一些透明层覆盖SWT控件或控件?

时间:2014-02-17 14:54:03

标签: java swt transparency layer glasspane

我想在自定义控件中实现选择功能。此控件包含一个图像,我希望图像在选中时变蓝。我不想按位改变图像。

是否可以在其他控件上方绘制一些半透明的蓝色矩形来模拟选择?

更新

以下代码不显示任何图纸:

public class ImageWithCaption extends Composite {

    private Label imageLabel;
    private Label textLabel;

    private void init() {
        setLayout(new GridLayout(1, false));

        imageLabel = new Label(this, SWT.NONE);
        imageLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));

        textLabel = new Label(this, SWT.NONE);
        textLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));

        addPaintListener(new PaintListener() {

            @Override
            public void paintControl(PaintEvent e) {

                GC gc = e.gc;


                gc.setForeground(e.display.getSystemColor(SWT.COLOR_BLUE));
                gc.fillRectangle(0, 0, e.width, e.height);

            }
        });
    }

    public ImageWithCaption(Composite parent, int style) {
        super(parent, style);
        init();

    }

    public void setText(String text) {
        textLabel.setText(text);
    }

    public String getText() {
        return textLabel.getText();
    }

    public Image getImage() {
        return imageLabel.getImage();
    }

    public void setImage(Image image) {
        imageLabel.setImage(image);
    }




}

1 个答案:

答案 0 :(得分:0)

透明度是SWT的一个难题......

来自Opal

的叠加层

或者您可以查看Appkit

我自己选择了Opal的叠加层并将其延伸以获得额外的功能。