Кнопка SWT: setSelection (true) не работает, если SWT.READ_ONLY - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть матрица SWT.TOGGLE кнопок, которые представляют некоторые переключатели-переключатели в моем приложении.

Идея состоит в том, чтобы отображать их переключенными (нажатыми), если они сохранены как активированные, но должны быть SWT.READ_ONLY, поскольку этот экран предназначен только для отображения и не должен быть интерактивным.

Проблема в том, что, если я добавлю SWT.READ_ONLY к кнопке, то setSelection(true) не будет работать, и все кнопки, по которым я звоню setSelection(true), будут отображаться не переключенными.

Как мы можем справиться с этим?

Button button = new Button(column, SWT.TOGGLE | SWT.READ_ONLY);
button.setSelection(true);

Спасибо

1 Ответ

0 голосов
/ 10 ноября 2018

SWT.READ_ONLY не является допустимым стилем для Button, вы получите неопределенное поведение, указав его. Вы можете использовать только стили, перечисленные в Javdoc для индивидуального контроля.

В текущей реализации SWT SWT.READ_ONLY имеет то же значение, что и SWT.PUSH, поэтому вы эффективно используете SWT.TOGGLE | SWT.PUSH, что категорически запрещено. Реализация, вероятно, выбирает реализацию SWT.PUSH, поэтому setSelection не работает.

Единственный способ остановить события с кнопки - это setEnabled(false), но это затеняет значение.

Так что вы, вероятно, хотите использовать какой-либо другой способ отображения этих настроек.

...