2014-01-07 45 views
6

如何將控件的背景設置爲透明?如何將控件設置爲透明背景

我現在說的是LabelText控件,但可以是我在GUI中看到的任何標準控件。

UPDATE:因爲選擇的答案說,我只是設置背景圖片(在我的情況)後,在一行添加:

shell.setBackgroundMode(SWT.INHERIT_FORCE); 

完整的代碼片段是在解決相當有幫助問題。

+0

爲什麼你需要它們是透明的? – Baz

+0

Visual Studio默認情況下使標籤透明,與我工作的其他環境一樣。答案是我不想設置背景顏色。我想讓窗口的背景(應用程序背景)顯示出來。 –

回答

10
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(); 
} 

是這樣的:

enter image description here

+0

很好的答案。我只需要添加這一行:shell.setBackgroundMode(SWT.INHERIT_FORCE);在設置我的背景之後。 –

+0

@Baz很好的答案... –

0

您需要在子控件之前對複合材料進行以下調用,例如標籤將從複合材料繼承背景。

composite.setBackgroundMode(SWT.INHERIT_DEFAULT); 
+0

我添加了代碼行以及其他代碼來創建複合變量(請參閱我的更新),但仍然沒有看到標籤是透明的。 –

2

據我所知,你不能設置控件(除了某些操作系統上的一個殼),透明或半透明的SWT ,例如在桌子控制檯前面顯示一個面板,桌子通過面板顯示。正如其他海報寫的,只能繼承背景

+0

請參閱:http://stackoverflow.com/a/40707215/1421194。 – Sasha

0

如果添加了複合並指定下列標誌,這將是透明的:new Composite(shell, SWT.TRANSPARENT | SWT.NO_BACKGROUND);