Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JavaFX выравнивание пунктов меню, выравнивание пунктов меню в MenuBar 
:(
    Опции темы
carper
  Дата 29.5.2013, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 4
Всего: 8



Используется JavaFx 2.1

Есть ли какой-то способ сделать так, чтобы одни пункты(Menu) главного меню (MenuBar)
выравнивались по левому краю, а другие по  правому:

Код

  ....
  MenuBar menuBar = new MenuBar();
  Menu about       = new Menu("about"); 
  Menu file  = new Menu("File");
  menuBar.getMenus().addAll(file, about);
  
  menuBar.prefWidthProperty().bind(stage.widthProperty()); 


Код выше приводит к тому, что пункты главного меню (menuBar): "about" и "File", будут 
распологаться рядом, в левой части меню: 
----------------------------------------------------------------------------------------------------
about   File
----------------------------------------------------------------------------------------------------

Я же хочу, чтобы они были в разных концах:
----------------------------------------------------------------------------------------------------
about                                                                                                               File
----------------------------------------------------------------------------------------------------



Что пытался делать:
1. Создавал 2-а MenuBar и распологал их в HBox нужным образом.
Это дает желаемый эффект, но нарушает работу с клавиатурой, например, нет перехода по tab между 
пунктами меню, принадлежащим к разным MenuBar (т.е. от "about" к "File" не попасть по tab ),
также F10 действует только на активацию последнего добавленного MenuBar.

2. Пытался вставить пустой пункт меню - но, это, во-первых, не дает истинного выравнивания (т.к. приходится
задавать размеры вручную и они теряют смысл при масштабировании - например, при увеличении окна 
правый пункт перестает прижиматься к правой границе окна), во-вторых, при попытке уменьшить окно, 
остальные пункты "пропадают", т.е. появляются многоточия.

Кто нибудь знает, как средствами JavaFx получить нужный мне эффект?

P.S. метод setHgrow не работает с Menu
PM MAIL   Вверх
Amp
Дата 29.5.2013, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Со стандартным MenuBar скорее всего никак. Если интересно, то можешь глянуть в исходники jfxrt (конкретно в файл MenuBarSkin.java). Там перебираются все меню, перепаковываются в MenuBarButton, переназначаются листенеры и кладутся в HBox.
PM MAIL   Вверх
carper
Дата 29.5.2013, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 4
Всего: 8



Цитата(Amp @  29.5.2013,  11:25 Найти цитируемый пост)
Со стандартным MenuBar скорее всего никак.


Жаль :(

Написать кастомный menubar дело не очень хитрое, просто хотелось надеяться на то, что
JavaFX учла ошибки Swing и заточилась на полноценный пользовательский GUI "из коробки" :(

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

P.S. 
А то отражения там всякие подобавляли, а стандартные кнопки - уродство страшное 
(по крайней мере под Windows это "нечто с синим ободком" заставило немедленно создать свой
CSS - работы на час, но почему этого не сделано сразу?), сменить HotKey для вызова главного меню
с F10 отдельная забава, даже просто сделать так чтобы главное меню отображалось по-умолчанию
развернутым по верху Stage не удосужились - изволь сам вызывать отдельный метод, кому помешали
glue из Swing тоже не ясно - да можно создать самому похожий эффект, но через одно место...


PM MAIL   Вверх
Amp
Дата 29.5.2013, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



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

Сам не так давно писал CSS для более-менее симпатичных кнопок: недокументированные свойства, неудобная документация и неприятное поведение в мелочах оставили осадок. Но для домашних поделок в принципе подходит и я доволен. Надеюсь, что Java 8 даст дополнительный толчок для развития JavaFX (помимо JavaFX 3D) и расширения комьюнити.
PM MAIL   Вверх
carper
Дата 29.5.2013, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 4
Всего: 8



Цитата(Amp @  29.5.2013,  13:48 Найти цитируемый пост)
Надеюсь, что Java 8 даст дополнительный толчок для развития JavaFX 


Даже не знаю, уж очень JAVA community легко увлекается модными штучками, типа HTML5, забрасывая все остальное. :(

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

Чтобы не оффтопить - можно ли одному и тому же пункту меню назначить несколько Action 
(честно говоря, я уже это быстренько сделал через простейшую имплементацию EventHandler<ActionEvent>, поленившись чиать доки, -  через механизм подписки 
на события, но что-то мне не верится, что это нельзя сделать стандратно)?

PM MAIL   Вверх
Amp
Дата 2.6.2013, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Через несколько вызовов addEventHandler(ActionEvent.ACTION, ...) и передачи туда EventHandler<ActionEvent>.
PM MAIL   Вверх
carper
Дата 4.6.2013, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 4
Всего: 8



Цитата(Amp @  2.6.2013,  23:36 Найти цитируемый пост)
Через несколько вызовов addEventHandler(ActionEvent.ACTION, ...) и передачи туда EventHandler<ActionEvent>. 


Понял, спасибо.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1164 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.