Тень отсутствует в SWT Shell, если для перерисовки установлено значение falseJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Тень отсутствует в SWT Shell, если для перерисовки установлено значение false

Сообщение Anonymous »

Я пытаюсь создать оболочку, содержащую SWT-браузер. Окончательный размер оболочки рассчитывается на основе содержимого браузера, поэтому, чтобы предотвратить скачок размера оболочки, я устанавливаю для перерисовки оболочки значение false и повторно активирую ее только в ProgressListener браузера. Если я сделаю это так, то после перерисовки обычная тень оболочки исчезнет. У меня Windows 10.
final Shell shell = new Shell(parentShell, SWT.ON_TOP | SWT.TOOL | SWT.NO_FOCUS);
shell.setRedraw(false);

final Browser browser = new Browser(shell , SWT.NONE);
browser.setText("Example html text");
browser.addProgressListener(ProgressListener.completedAdapter(progressCompleted -> {
Point size = calculateBrowserSize();
shell.setSize(size.x, size.y);
browser.setSize(size.x, size.y);
shell.setRedraw(true);
}));

shell.open();

EDIT: Я нашел неоптимальное решение: используйте setSize вместо setRedraw. Таким образом, на долю секунды он по-прежнему показывает оболочку неправильного размера, но ее практически не видно.
final Shell shell = new Shell(parentShell, SWT.ON_TOP | SWT.TOOL | SWT.NO_FOCUS);
shell.setSize(1, 1); // (0,0) doesn't work, also produces shell without drop shadow

final Browser browser = new Browser(shell , SWT.NONE);
browser.setText("Example html text");
browser.addProgressListener(ProgressListener.completedAdapter(progressCompleted -> {
Point size = calculateBrowserSize();
shell.setSize(size.x, size.y);
browser.setSize(size.x, size.y);
}));

shell.open();


Подробнее здесь: https://stackoverflow.com/questions/790 ... t-to-false
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»