Изменение цвета заголовка панели в Java Swing

Я запускаю приложение Swing на Win7, используя монитор с плоским экраном 144 dpi. Названия моих рамок, панели параметров и т. Д. Отображаются белым цветом на прозрачном фоне (Aero?). Мне вообще нравится Aero, но белые заголовки очень трудно читать! Я просмотрел все свойства UIManager, о которых я могу думать, и ни одно из них, похоже, не имеет никакого эффекта. Есть ли уровень ниже UIManager, к которому я могу добраться - и желательно вносить изменения один раз для моего приложения, так как я не хочу добавлять код для каждого отдельного вызова панели параметров. Может быть, я упускаю что-то очень простое... но помощь будет оценена!

Я бы тоже хотел изменить заголовочные шрифты, но это не так срочно!

Кроме того, кстати, вы делаете вызовы UIManager.put до или после настройки внешнего вида? Или это не имеет значения?


Больше информации: я изменил свою персонализацию Win7, чтобы использовать тему Aero под названием Canada, а названия теперь черные, с использованием разумного шрифта. Итак, мой вопрос становится:

Как атрибуты UIManager связаны с темами Win7, и, учитывая, что я не могу предсказать, какие пользователи будут использовать темы, как я могу контролировать внешний вид заголовка панели?


Я собираюсь поставить этот вопрос по-другому: почему я не могу изменить цвет каждого пикселя на панели дисплея моего приложения? Есть ли уровень ниже UIManager, который кажется очень ограниченным в том, что вы можете изменять...?

4 ответа

Этот способ будет немного сложным, но если вам нужен собственный Контейнер с полным контролем,

1) создать Un_decorated JFrame / JDialog

2) на СЕВЕРНЫЙ вариант вы можете поставить JPanel с GradientPaint что имитирующий контейнер, который пришел из Win7

3) и поставить 3 JButtons со значком к JPanel с GradientPaint

4) добавить необходимые события в JButtons и для более приятного вывода в GUI было бы установить JButtons#setContentAreaFilled(false)

Использовать setUndecorated(false) способ отключить декорации окон хост-платформы.

Ниже приведен пример этого, хотя это для платформы Mac OS, он может предоставить вам отправную точку. Перекрасьте на полупрозрачную раму / панель / компонент.

Возможно, этот урок будет полезен; он объясняет, как изменить внешний вид украшения JFrame. Он также имеет демонстрационную программу, чтобы вы могли изучить различия.

По умолчанию внешний вид оформления JFrame управляется операционной системой, поскольку таким образом приложения лучше сочетаются с общим внешним видом и ощущением используемой платформы. Но вы можете изменить это и контролировать это сами; нет необходимости снимать украшения и "подделывать" их в рамке.

Недостатком является то, что если вы сами настраиваете внешний вид декораций, а не позволяете ОС делать это, вам, возможно, придется подумать о том, какой стиль и внешний вид использовать, чтобы ваше окно не конфликтовало с какой-либо платформой, на которой может запускаться приложение. от.

Если вы хотите управлять декораторами окна, используйте JFrame.setDefaultLookAndFeelDecorated (boolean). Установите это в true, а затем установите свой внешний вид.

Чтобы увидеть эту работу для вас, сначала установите декораторы (как указано выше), а затем выберите внешний вид и удобство использования (даже если оно может быть некрасивым), например "Металл: Сталь" или "Металл: Океан":

java -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel -Dswing.metalTheme=steel MyApp.jar

или же

UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

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

Другие вопросы по тегам