Custom Button in JavaFX
Можно ли как в WPF заменить внутренний текст кнопки на контейнер?
Я перешла на javaFX с WPF. К хорошему привыкаешь быстро... В WPF у большинства элементов есть свойство Content, которое может хранить любой элемент, в том числе контейнер. Таким элементом является и Button.
Пыталась найти внутренности класса Button из JavaFX и остальных наследуемых им, но так и не нашла. В официальной документации нашла статью для создания самодельного контроллера Предполагаю, что только таким образом можно переопределить кнопку. Будет обидно, если это так, потому что придётся переопределять все встроенные анимации и события.
Уточнение: Если у кнопки будет контейнер, с ней можно делать всё что угодно. Одна задача с картинкой - это частный случай. Возможно, мне захочется добавить несколько по разному стилизованных Text-элементов, а между ними какую-нибудь линию. Такой гибкости, к большому сожалению, я не смогла найти. Посмотрите на картинку, надеюсь, что станет понятнее.
Ответы (1 шт):
На самом деле, JavaFX не так уж и плох, как кажется на первый взгляд. Правда, именование некоторых методов вносит непонимания.
У Button есть метод setGraphic(Node a), который принимает любой Node, который является родительским для всех отображаемых элементов. Это означает, что можно вложить любой контейнер, а дальше уже куда фантазия унесёт.
Почему меня смутило название? Во-первых, в WPF все вложенные контейнеры - это content, но это только интуиция. Во-вторых, об этой функции почему-то сразу не рассказывают, когда рассказывают про устройство узлов контроллеров. В третьих, есть у них(контроллеров в JavaFX) свойство contentDisplayProperty, которое отвечает за позиционирование graphics внутри контейнера... Логика?! Зато отступы от текста, который является содержимым по умолчанию, это graphicTextGapProperty... Тяжело...


