Полностью настроенные windows JavaFX?

Я хотел бы иметь приложение, в котором я полностью настраивал внешний вид windows. До сих пор я узнал, что я могу удалить типичные вещи windows с помощью:

class Application extends javafx.application.Application { /** * Starts the application. * * @param stage */ override def start(stage: Stage) { stage.initStyle(StageStyle.TRANSPARENT) // Load the main window view. val loader = new FXMLLoader() loader.setLocation(getClass.getResource("/com/myproj/application/MainWindow.fxml")) val root = loader.load().asInstanceOf[Parent] val scene: Scene = new Scene(root, Color.TRANSPARENT) stage.setScene(scene) stage.show() } } 

Все остальное отлично работает, за исключением того, что drag and drop windows, двойное нажатие на максимальный размер, drag and drop на верхний край экрана в Windows должно быть максимально активным и т. Д. Возможности родного windows полностью отсутствуют.

Могу ли я как-то довольно легко настроить весь вид windows, не теряя при этом все эти приятные возможности.

Я говорю о чем-то вроде Adobe Photoshop, который выглядит совершенно по-другому, но при этом сохраняет эти возможности (или реализует их поверх своего пользовательского интерфейса вручную).

Это было бы началом, если бы я мог по крайней мере реализовать кнопки перетаскивания + windows для начинающих. Здесь я нацелен на Linux, Mac и Windows.

См. Индивидуальный вид windows и обработку в приложении Ensemble Sample , который включает исходный код. Загрузите исходный код , создайте его и запустите его как автономное приложение, а не встроенное в браузер. Это не будет то, о чем вы просите, потому что такие вещи, как drag and drop на верхний край экрана, чтобы активировать максимизацию, не будут работать, я думаю, но это должно быть очень близко, и вы всегда можете что-то кодировать, когда его тянули около верхнего края. Окно Ensemble имеет такие функции, как пользовательские изменения размера, минимизация, максимизация, закрытие значков, область в верхней части windows, которую вы можете использовать для перетаскивания windows или двойного щелчка, чтобы максимизировать или минимизировать окно – то есть большинство стандартных функций, которые вы ожидалось бы от системы оконного оформления рабочего стола.

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

Возможно, вам захочется попробовать стиль UNDECORATED stage, а не TRANSPARENT, и посмотреть, улучшитесь ли вы с его встроенной интеграцией Windows.

В настоящее время в JavaFX есть несколько открытых функций, которые необходимо загрузить с помощью JDK8, Windows: поддержка эффектов Aero Glass для окон верхнего уровня , Mac: поддержка NSTexturedBackgroundWindowMask для окон и сплошной белый фон, созданный в рабочей области, при необходимости – в Scenegraph , который, когда он будет реализован, скорее всего поможет вам достичь вашей цели – проголосуйте за них, если такие функции важны для вас.

Пример применения ансамбля

Также проверьте VFXWindows, который является открытым исходным кодом для JavaFX.

Обновить

Также связан проект Undecorator, который позволяет вам легко создавать этап JavaFX со стандартными элементами управления Chrome / Maximize / Close / Resize, которые отображаются с помощью механизма JavaFX, а не системы оконной ОС. Это позволяет вам достичь определенного пользовательского контроля над рендерингом окон, который отображает приложение, такое как Ensemble.

Вы можете использовать эту библиотеку. Это полностью настраиваемая сцена JavaFx (CustomStage). Вы можете увидеть подробное описание того, как его использовать в этой пользовательской вики

В нем есть,

  • Изменение размера windows
  • Кнопки действий по умолчанию и их поведение (закрыть, максимизировать / восстановить, свести к минимуму)
  • Перетаскивание окон
  • Окно автоматически масштабируется как разрешение экрана
  • Очень отзывчивый
  • Стилируемый (через css и методы)
  • Можно добиться прозрачности
  • Имеет встроенные навигационные панели и ящики
  • и т.п.
  • Не найден параметр конфигурации для ключа 'akka.version'
  • Равномерность classа в Apache Spark
  • Оператор Scala @
  • Понимание скрытого в Scala
  • Значения символов Build.scala,% и %%
  • По умолчанию для отсутствующих свойств в игре 2 формата JSON
  • Какую библиотеку JSON использовать в Scala?
  • Добавить банки в Spark Job - spark-submit
  • Scala's '::', как это работает?
  • Согласование шаблонов Scala с именем переменной нижнего регистра
  • Прямые ссылки - почему этот код компилируется?
  • Давайте будем гением компьютера.