2014-01-07 3 views
6

Как настроить прозрачность фона элемента управления?Как установить элемент управления на прозрачный фон

Я говорю о Label и Text элементах управления в настоящий момент, но может быть любым из стандартных элементов управления, которые я вижу в графическом интерфейсе.

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);

Смежные вопросы