Java JLabel автоматически меняет шрифт

У меня есть несколько различных компонентов в очень большом приложении JavaEE. Таким образом, отладка - это боль, и, к сожалению, я не могу предоставить SSCCE, который точно описывает проблему, с которой я столкнулся.

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

Простой вопрос: почему?

Если я прохожу через отладчик Eclipse, никаких изменений не происходит. Так что время как-то влияет.

Я все еще кузнечик Java (работаю один) и не построил эту программу таким образом, чтобы EDT был священным объектом. Меня беспокоит то, что, поскольку я потенциально не делаю все вызовы repaint() в EDT, JTabbedPane, JLabel и другие свойства шрифта сбрасываются и перерисовываются.

РЕДАКТИРОВАТЬ:

Забыл сказать, что я ограничен Java 1.5.

Я думаю, что сузил его до проблемы с использованием HTML в заголовках вкладок JLabels и JTabbedPane ... но дальше этого я понятия не имею. Что касается JTabbedPane, он входит в методы рисования с правильными объектами Font/FontMetrics, но по какой-то причине очень редко (иногда чаще; еще не разобрался с триггером времени) переключает шрифт, стиль, и даже размер, при котором он рисует текст.


person BenCole    schedule 09.03.2012    source источник
comment
Должно быть нормально вызывать repaint() вне EDT, и, если мне не изменяет память, этот факт задокументирован для этого метода. Для меня это не пахнет проблемой EDT, поскольку они обычно вызывают гораздо более серьезные проблемы, такие как зависание или смерть вашей программы. Похоже, вы находитесь на стадии обнаружения отладки, когда вы должны сначала найти свою проблему, и поэтому я не уверен, что вы уже находитесь на этапе, когда мы можем вам помочь. Продолжайте пытаться разделять и властвовать, чтобы попытаться изолировать проблему (если только кто-то умнее меня не предложит вам решение — я искренне надеюсь, что это произойдет!).   -  person Hovercraft Full Of Eels    schedule 10.03.2012
comment
Какой внешний вид вы используете?   -  person Adam    schedule 10.03.2012
comment
Вполне вероятно, что попытка предоставить SSCCE на самом деле поможет вам понять, что вы делаете неправильно, и устранить проблему. Кстати, вызов repaint() вне EDT не является проблемой.   -  person Guillaume Polet    schedule 10.03.2012
comment
Вы когда-нибудь намеренно меняли Font своих компонентов?   -  person Jeffrey    schedule 10.03.2012
comment
Вы можете искать случайные JAR-файлы; также ищите ложные вызовы setUI(), иногда ошибочно используемые вместо repaint(), et al.   -  person trashgod    schedule 10.03.2012
comment
Я использую один из OfficeLnF Look and Feels, и он устанавливается прямо перед запуском основной программы. Я меняю Font компонентов, но только один раз, когда они инициализируются. Кроме того, я не использую Mac; не уверены, что случайные JAR-файлы все еще существуют и выпускаются?   -  person BenCole    schedule 10.03.2012
comment
Да, все платформы имеют стандартные имена свойств каталогов, хотя каждая платформа имеет собственный список путей для данного свойства. У вас может быть несколько копий файла OfficeLnF.   -  person trashgod    schedule 10.03.2012
comment
отредактировал Q, чтобы включить немного больше информации.   -  person BenCole    schedule 12.03.2012