我想在自定义控件中实现选择功能。此控件包含一个图像,我希望图像在选中时变蓝。我不想按位改变图像。
是否可以在其他控件上方绘制一些半透明的蓝色矩形来模拟选择?
更新
以下代码不显示任何图纸:
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);
}
}