如何將控件的背景設置爲透明?如何將控件設置爲透明背景
我現在說的是Label
和Text
控件,但可以是我在GUI中看到的任何標準控件。
UPDATE:因爲選擇的答案說,我只是設置背景圖片(在我的情況)後,在一行添加:
shell.setBackgroundMode(SWT.INHERIT_FORCE);
完整的代碼片段是在解決相當有幫助問題。
如何將控件的背景設置爲透明?如何將控件設置爲透明背景
我現在說的是Label
和Text
控件,但可以是我在GUI中看到的任何標準控件。
UPDATE:因爲選擇的答案說,我只是設置背景圖片(在我的情況)後,在一行添加:
shell.setBackgroundMode(SWT.INHERIT_FORCE);
完整的代碼片段是在解決相當有幫助問題。
shell.setBackgroundMode(SWT.INHERIT_FORCE);
會做你想要什麼。
Composite
這個常量表示一個屬性(例如背景)被所有的孩子繼承。
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
shell.setText("StackOverflow");
shell.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
shell.setBackgroundMode(SWT.INHERIT_FORCE);
new Button(shell, SWT.PUSH).setText("Button");
new Label(shell, SWT.NONE).setText("Label");
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
是這樣的:
很好的答案。我只需要添加這一行:shell.setBackgroundMode(SWT.INHERIT_FORCE);在設置我的背景之後。 –
@Baz很好的答案... –
您需要在子控件之前對複合材料進行以下調用,例如標籤將從複合材料繼承背景。
composite.setBackgroundMode(SWT.INHERIT_DEFAULT);
我添加了代碼行以及其他代碼來創建複合變量(請參閱我的更新),但仍然沒有看到標籤是透明的。 –
據我所知,你不能設置控件(除了某些操作系統上的一個殼),透明或半透明的SWT ,例如在桌子控制檯前面顯示一個面板,桌子通過面板顯示。正如其他海報寫的,只能繼承背景。
請參閱:http://stackoverflow.com/a/40707215/1421194。 – Sasha
如果添加了複合並指定下列標誌,這將是透明的:new Composite(shell, SWT.TRANSPARENT | SWT.NO_BACKGROUND);
爲什麼你需要它們是透明的? – Baz
Visual Studio默認情況下使標籤透明,與我工作的其他環境一樣。答案是我不想設置背景顏色。我想讓窗口的背景(應用程序背景)顯示出來。 –