Есть способ сделать это на Linux (GTK) .(Тем не менее, не работает в Windows. (Не знаю о MacOSX.))
Просто setBackground
в RGBA с альфа-каналом.Например:
Canvas canvas = new Canvas(parent, SWT.NONE);
canvas.setBackground(new Color(canvas.getDisplay(), 100,100,100,100));
//Note the last argument (I'm setting not only R, G, B, but also A).
Вам даже не нужны SWT.NO_BACKGROUND
, SWT.TRANSPARENT
или другие флаги стиля.
PS: Вы не должны создавать цвета таким образом.Цвета должны быть утилизированы с помощью утилизации.Присвойте вновь созданный цвет переменной, чтобы иметь возможность использовать его и освобождать.Я создал цвет "inline" только для простоты примера.
Дополнительное примечание: не устанавливайте альфа-канал на 0. Хотя меньшее значение должно означать более прозрачный, в действительности оно не работает со значением 0,только с 1 и выше.Возможно, он считает 0 неустановленным или т. Д.