В настоящее время я работаю над набором пользовательских элементов управления для продукта компании, в которой я работаю. Для этого я расширяю множество элементов управления Swing и также переопределяю много методов paint
.
Чтобы поддерживать согласованную цветовую схему, я получаю цвета для моих методов paint
, setBackground
и т.д., используя UIManager.getColor
.
Это было прекрасно, пока мы не заметили, что Nimbus LookAndFeel, поставляемый с текущими версиями JRE, использует совершенно разные цветовые клавиши, поэтому многие вещи выглядят совершенно неуместными.
Например, в то время как все остальные элементы LookAndFeels (Metal, Windows Classic, Windows, CDE/Motif, GTK) определили ключевой "текст" как яркий фон для текстов и "textText" в качестве соответствующего цвета переднего плана ", текст" в Nimbus на самом деле черный цвет переднего плана, и стандартный цвет фона текста, кажется, не существует.
"TextField.background" будет работать, но это, к примеру, не существует для Windows LookAndFeels.
Я предполагаю, что у вас проблема. Я не хочу поддерживать набор цветовых клавиш для каждого LAF, который знает, какие LAF будут добавлены в будущем и которые моя компания может решить использовать.
Простым решением было бы избавиться от Nimbus, конечно, но, по понятным причинам, моему боссу вообще не нравится эта идея, кроме того, Nimbus является частью JRE в эти дни и должен поддерживаться.
Итак, я задаюсь вопросом, существует ли какой-либо стандартизованный способ получения LAF-зависимых цветов, например, "текст фона/переднего плана", "выделенный текст bg/fg" и т.д.?