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

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

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()
  }
}

Все остальное работает нормально, за исключением перетаскивания окна, двойного щелчка для максимизации, перетаскивания к верхнему краю экрана в Windows при активном максимизации и т. д. Собственные возможности Windows полностью отсутствуют.

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

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

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


person Tower    schedule 13.10.2012    source источник


Ответы (2)


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

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

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

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

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

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

Обновить

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

person jewelsea    schedule 13.10.2012
comment
Дополнение, если вы не хотите использовать undecorator Образец пользовательского декоратора - person bhathiya-perera; 12.07.2014
comment
Странно, что Ensemble 8 в Linux не имеет настроенного окна... - person AtomX; 22.12.2020

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

В нем есть,

  • Изменение размера окна
  • Кнопки действий по умолчанию и их поведение (закрыть, развернуть/восстановить, свернуть)
  • Перетаскивание окна
  • Окно автоматически масштабируется по разрешению экрана
  • Очень отзывчивый
  • Стилизуется (через css и методы)
  • Можно добиться прозрачности
  • Имеет встроенные панели навигации и ящики
  • и т. д.
person Oshan_Mendis    schedule 18.04.2018