Java: как вы стилизуете компоненты Swing?

Я пишу свой первый Java-проект.

Мне было интересно, можно ли стилизовать компоненты Swing (установить цвет фона, удалить границы с кнопок и т. д.)

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
12 388
5

Ответы 5

Конечно, можно сделать значительные настройки, потому что это то, что делают различные варианты внешнего вида.

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

В качестве альтернативы вы могли бы, возможно, подклассифицировать существующие компоненты и использовать / переопределить их существующие методы, если вам нужны только незначительные изменения.

Для изменения в масштабе всего приложения создание (или расширение) собственного подключаемый внешний вид, вероятно, является правильным решением. Для специальных эффектов вам также следует взглянуть на рамки для художников. Обратите внимание, что они являются частью Swingx, а не ядра Swing.

Если это так же просто, как просто изменить шрифт, фон, границы и т. д. Swing может делать все это по умолчанию. Т.е. для JButton:

JButton aButton ...
aButton.setBackground(new Color(...));  
aButton.setForeground(new Color(...));  
aButton.setFont(new Font(...));  
aButton.setBorder(null);  

Посмотрите на большинство из этих методов в JComponent. Или, для более специфичных для компонента методов, в документации компонента.

Я бы порекомендовал вам прочитать некоторые основы в Учебник по Java или JComponent API или даже в такой книге, как Грязные богатые клиенты или Программа Java HowTo.

Нестандартного внешнего вида и ощущений было бы слишком много. Я предлагаю сначала посмотреть, не соответствуют ли приведенные выше решения вашим потребностям, а затем пойти на это.

Это не совсем так: setFont, setColor ... не статические методы, они не позволяют вам устанавливать значения по умолчанию для каждого типа компонентов.

jfpoilpret 13.01.2009 13:41

Гм .. Может, мне не стоит использовать JComponent. Я не имел в виду, что они статичны, скорее, что большинство классов, являющихся подклассами JComponent (JButton, JLabel и т.д.), наследуют эти методы .. Позвольте мне пояснить это лучше ..

pek 13.01.2009 17:44

Если вы хотите сильно стилизовать свои компоненты, приобретение стороннего Look-And-Feel и его использование может быть вашим лучшим выбором. Мой личный фаворит - Вещество, у которого даже есть API для создания полностью настраиваемых LAF поверх Substance.

Есть несколько открытых проектов Soruce, которые позволяют стилизовать компоненты Swing в формате, подобном CSS.

Вам стоит взглянуть на проект Java CSS. Он был введен в это сообщение в блоге.

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