LINUX.ORG.RU

Java и desktop

 , , ,


1

3

Я конечно понимаю, что Java на десктоп ориентированна меньше, чем на другие области применения, однако отсутствие возможности централизованно управлять стилем отображения и особенно шрифтами swing/javafx на мой взгляд какое-то недоразумение.

Подход применяемый в gtk и qt позволяет работать в разных приложениях, отображаемых в едином стиле. Изменил глобальные настройки отображения - все подхватили по умолчанию. Если приложению требуется какая-либо кастомизация, разработчик реализует ее.

Если речь идет о swing, то подобное поведение наблюдается только при использовании GTKLookAndFeel. И ведь можно даже задать его использование по умолчанию с помощью Dswing.defaultlaf в _JAVA_OPTIONS.

Малину портят приложения, которые принудительно устанавливают стиль отображения, например DBVis. GTKLookAndFeel не доступен принципиально, выбирать приходится между Metal и несколькими убогими темами в самом приложении. Хорошо, будь по вашему, беру Metal. Но что это за убожество вместо шрифтов? Само приложение позволяет поменять шрифты только для таблиц и редактора, так что приходится наслаждаться мелкими для моего разрешения, но полужирными шрифтами в меню. Неужели нет никакой возможности это исправить?

С javafx как я понимаю все еще хуже. Нет никакого аналога Dswing.defaultlaf. Хочешь чтобы твое приложение выглядело стильно? Интегрируй в него темку. Хочешь, чтобы все javafx приложения выглядели стильно? Мечтай, это невозможно.

Ну как так то? Доколе? Если я в чем-то не права и просто не умею готовить джаву, научите.

Пример: https://ibb.co/e8Y6e7


а еще JavaFX8 не умеет русифицировать контекстное меню (ПКМ)

bvn13 ★★★★★ ()

Длинный пост нытья о том, как плохо разработчики микроскопа приспособили его для забивания гвоздей

Может не надо?

morse ★★★★★ ()
Ответ на: комментарий от Im_not_a_robot

Разве javafx не закопали?

JavaFX собираются выпилить из стандартной поставки в JDK11. Будет доступна в виде стороннего проекта под эгидой Gluon. Так что пока не закопали.

totik ()

Под GTK подстраивается SWT, а JavaFX да, как написал так и будет выглядеть.

xcariba ★★ ()
Ответ на: комментарий от totik

Будет доступна в виде стороннего проекта под эгидой Gluon. Так что пока не закопали.

Ну это равносильно похоронам.

Im_not_a_robot ★★★★★ ()
Ответ на: комментарий от Im_not_a_robot

Равносильно похоронам только если глуоном звймется апач фоундейшен.

Так то так, считай, как в больницу отдали с третьим инсультом.

takino ★★★★ ()

Если речь идет о swing, то подобное поведение наблюдается только при использовании GTKLookAndFeel

Есть же современный молодёжный NimbusLookAndFeel на основе векторных кривых.

iZEN ★★★★★ ()

GTKLookAndFeel не доступен принципиально, выбирать приходится между Metal и несколькими убогими темами в самом приложении.

Декомпилируй и посмотри как это сделано. в 90% случаев это можно подменить через какой-нить проперти файл.

С javafx как я понимаю все еще хуже.

Оно мертво.

vtVitus ★★★★★ ()
Ответ на: комментарий от EXL

Я в курсе. С swt проблем нет, потому его и не упомянула. На скриншоте присутствует как пример беспроблемного решения.

totik ()
Ответ на: комментарий от vtVitus

Оно мертво.

А какой из тулкитов под джавой не мертв?

totik ()
Ответ на: комментарий от totik

А какой из тулкитов под джавой не мертв?

Мне кажется Swing и JFX вполне себе живы.

nihirash ★★★ ()

По мне главное чтобы приложение няшно выглядело и позволяло менять настройки рендеринга шрифтов.
Похоже оно на какие-то виджеты тулкита DE или нет уже дело десятое.

Идея о похожести контролов красивая и понятная (а в маке она даже лучше, потому что там заботятся о преемственности форм), но на практике она вносить больше проблем (разработчики не пилят цветовые схемы {гимп в 2018 не умеет рисоваться в тёмных тонах, софт для любителей растровой графики, угу}, не пилят уникальные контролы {пожалуй тут радовали наверное только разработчики Amarok и QtCreator}).

Exmor_RS ★★ ()
Ответ на: комментарий от totik

Они все не очень живы. Но, если бы мне приставили пистолет к голове и сказали пиши гуй на java, я бы выбрал swing.

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от Exmor_RS

По мне главное чтобы приложение няшно выглядело и позволяло менять настройки рендеринга шрифтов.

Тогда оно будет не таким как все, а Swing старается выглядеть безупречным. Для нативно выглядящего оконного приложения на Java нужно использовать AWT или SWT - эти используют нативные виджеты и не пытаются рендерить шрифты своими алгоритмами.

Пример приложений на SWT - RSSowl и Eclipse.

iZEN ★★★★★ ()
Последнее исправление: iZEN (всего исправлений: 1)

99% GUI-приложений вообще не знают ни про какие темы, не говоря уже о том, что, наверное, 90% приложений разработчик тестировал только на своём компьютере и шанс словить разлезшуюся форму при нестандартных настройках ненулевой. Претензии немного странные, на мой взгляд. Но в целом - исходники обычно открыты, если тебе это так надо, разбирайся, дорабатывай или пинай разработчиков, может и сподобятся.

Legioner ★★★★★ ()

А что же не так с JavaFX?Помойму нормально выглядит,разве что в темной теме гнома не так приятно

playX ★★ ()
Ответ на: комментарий от iZEN

JFX - труп. AWT, Swing и SWT живы.

Немного жаль, но все же кажется, что развития джавы на десктопах слегка идет на спад, включая Swing/SWT.

Но это именно мое личное мнение.

Несмотря на все шутки о JVM, но electron - куда большее зло, залезшее на стол.

nihirash ★★★ ()
Ответ на: комментарий от vtVitus

Они все не очень живы. Но, если бы мне приставили пистолет к голове и сказали пиши гуй на java, я бы выбрал swing.

У свинга проблемы в связке Intelij Idea + maven. Если использовать редактор Idea, то нельзя применять лямбды внутри классов форм, ибо ideauidesigner-maven-plugin падает: https://stackoverflow.com/questions/32135018/lambda-expressions-and-java-1-8-...

Это удивительно, ибо JetBrains - не хухры мухры, а такой ужасный баг не дает полноценно использовать swing.

totik ()
Ответ на: комментарий от playX

А что же не так с JavaFX?Помойму нормально выглядит,разве что в темной теме гнома не так приятно

У пользователя нет возможности всем приложениям, написанный на JavaFX централизовано сменить тему.

totik ()
Ответ на: комментарий от totik

У свинга проблемы в связке Intelij Idea + maven.

Может наоборот? Это у Intelij Idea проблема со Swing.

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

Может наоборот? Это у Intelij Idea проблема со Swing.

Так точно =)

totik ()

Ты нуб. Объясняю историю: был AWT, который рассчитан максимально на то, чтобы мимикрировать под нативные контролы каждой системы. Из-за того, что кроссплатформенный сабсет контролов крайне убог, и сделали вместо AWT Swing, который выглядит ненативно, зато имеет дофига контролов с дофига возможностей на любой платформе. Радуйся, что хоть как-то мимикрирует. Весьма недурственно, я бы сказал, хотя Qt, конечно, под GTK+ лучше мимикрирует. Посмотрим ещё, чё там в Wine запилили, не хочу ради этого стейджинг ставить.

bodqhrohro_promo ()
Ответ на: комментарий от bodqhrohro_promo

и сделали вместо AWT Swing

AWT при этом никуда не делся, да. AWT и внутри Swing работает.

iZEN ★★★★★ ()
Ответ на: комментарий от bodqhrohro_promo

Ты нуб. Объясняю историю: был AWT, который рассчитан максимально на то, чтобы мимикрировать под нативные контролы каждой системы. Из-за того, что кроссплатформенный сабсет контролов крайне убог, и сделали вместо AWT Swing, который выглядит ненативно, зато имеет дофига контролов с дофига возможностей на любой платформе. Радуйся, что хоть как-то мимикрирует. Весьма недурственно, я бы сказал, хотя Qt, конечно, под GTK+ лучше мимикрирует. Посмотрим ещё, чё там в Wine запилили, не хочу ради этого стейджинг ставить.

Увы, но вы не читали текст или читали, но не поняли. История и предпосылки возникновения awt, swing, javafx мне известны.

Какие бы цели не ставил тулкит, возможность централизованного задания общей темы - вполне ожидаемая фича.

totik ()
Ответ на: комментарий от totik

вполне ожидаемая фича

Именно исходя из сути Swing — нет. Вы бы ещё от FLTK перделкотемизации требовали — ну как же, это ж тулкит, в нём должны быть ТЕМЫЫЫЫЫ.

bodqhrohro_promo ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.