проблема с переключением полноэкранного режима в приложениях e4 (только для Mac)

#java #macos #swt #e4

#java #macos #swt #e4

Вопрос:

в моем приложении у меня есть разделительная панель, которая разделяет основной вид и подробный вид

ширина основного вида = 300 и ширина подробного просмотра = 300

  1. допустим, при запуске отображается только основной вид
  2. вы нажимаете на полноэкранную кнопку, которая переводит ваше приложение в полноэкранный режим
  3. при нажатии на кнопку или что-то в этом роде откроется подробное представление (правая часть)
  4. щелчок по выходу из полноэкранного режима
  5. размер моего приложения составляет 300, а не 600

если вы сначала откроете просмотр сведений, сделаете полноэкранный режим и выйдете из полноэкранного режима, ширина приложения составит 600

какой бы ни был размер приложения перед переходом в полноэкранный режим, при выходе из полноэкранного режима устанавливается та же ширина

я не могу программно установить ширину окна после выхода из полноэкранного режима

я пробовал window.setWidth() — не работает

У кого-нибудь есть какие-либо предложения?

Комментарии:

1. Это полноэкранная кнопка только для Mac (справа от строки заголовка), которая перемещает приложение в отдельное «Пространство»?

2. да, это перемещается в отдельный «пробел»!!! (нажав правую верхнюю кнопку в строке заголовка)

3. я попытался изменить размер приложения в shell_1.addListener(SWT.Resize,new Listener(), это не работает

4. @greg-449 есть предложения?

Ответ №1:

Похоже, вам нужно отложить запуск вашего кода, чтобы установить размер окна, до тех пор, пока не будет запущен асинхронный код, поставленный в очередь WBWRender классом e4.

Поскольку, похоже, нет подходящего события для использования, вы можете просто запланировать запуск UIJob чуть позже:

 UIJob job = new UIJob("set size")
   {
     @Override
     public IStatus runInUIThread(IProgressMonitor monitor)
     {
       window.setWidth(800);

       return Status.OK_STATUS;
     }
  };

job.schedule(2000);
  

Две секунды кажутся мне самыми короткими, что работает для меня — все это немного странно!

Комментарии:

1. я сделал то же самое, это работает, но пользователь может видеть задержку при изменении размера, есть ли другой способ?