Это можно сделать:
Ключ находится в классе javax.swing.plaf.basic.BasicLabelUI
, который является базовым интерфейсом для меток.
В методе рисования мы можем видеть этот код:
View v = (View) c.getClientProperty(BasicHTML.propertyKey);
if (v != null) {
v.paint(g, paintTextR);
}
Класс BasicHTML является поставщиком возможностей HTML в Java, поэтому, теоретически, если вы замените свойство client на BasicHTML.propertyKey
с вашей собственной реализацией View, тогда этот класс будет использоваться, и вы сможете делать все, что захотите, для визуализации текста.
Класс javax.swing.plaf.basic.BasicLabelUI
является родителем большинства других пользовательских интерфейсов меток LAF, но не всех, поэтому он может работать не для всех LAF.LAF, которые не поддерживают HTML с использованием класса BasicHTML
, также не будут работать с вашим исправлением.
Но ИМХО, это скорее взлом, чем функция.Вы программируете реализацию, а не интерфейс.Поэтому, если у вас нет действительно серьезных причин для этого, я бы посоветовал найти более чистый способ визуализации вашего собственного HTML-кода, такого как подкласс JLabel.