Как обеспечить, чтобы текст отображался так, чтобы он соответствовал дереву?

JTree, по-видимому, не изменяет автоматически размер своих узлов для размещения шрифтов размера 20+. Я пытался позвонить revalidate(), но это не помогло. Текст в узлах кажется «сжатым» по вертикали, так что верхняя и нижняя части букв обрезаются.

Как я могу использовать большие шрифты и обеспечить их правильное отображение с помощью JTree?


person Greg Mattes    schedule 07.10.2013    source источник
comment
попробуй treeGuy.setLargeModel(true);   -  person    schedule 07.10.2013
comment
может зависеть от LAF: некоторые (например, win) устанавливают фиксированную rowHeight - убедитесь, что вы установили ее в -1 (или аналогичную, не совсем помню), чтобы принудительно использовать переменную rowHeight (которая будет запрашивать требования к размеру рендерера)   -  person kleopatra    schedule 07.10.2013
comment
Эти комментарии подозрительно похожи на ответы... хотя подход setLargeModel(true) не оказал никакого влияния на Mac OS X...   -  person Greg Mattes    schedule 07.10.2013
comment
@kleopatra: Отлично! Для справки: API говорит меньше или равно нулю.   -  person trashgod    schedule 07.10.2013
comment
@trashgod спасибо за ссылку, постараюсь запомнить :-)   -  person kleopatra    schedule 07.10.2013


Ответы (1)


Некоторые LAF (например, WindowsLookAndFeel) устанавливают фиксированную высоту строки, которая является довольно произвольной (например, 16px). Обязательно заставьте дерево динамически вычислять высоту для каждого узла:

 tree.setRowHeight(-1);

или вычислить rowHeight на основе шрифта дерева и установить его как фиксированную высоту.

person kleopatra    schedule 07.10.2013
comment
@Greg Mattes - извините за частичный откат, но тег code предназначен для встроенного кода, а не для выделения ключевых слов :-) Спасибо за исправление опечатки! - person kleopatra; 07.10.2013