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




Конечно, можно сделать значительные настройки, потому что это то, что делают различные варианты внешнего вида.
Вы можете посмотреть на подключаемая архитектура внешнего вида, хотя это может быть излишним для того, что вы хотите.
В качестве альтернативы вы могли бы, возможно, подклассифицировать существующие компоненты и использовать / переопределить их существующие методы, если вам нужны только незначительные изменения.
Для изменения в масштабе всего приложения создание (или расширение) собственного подключаемый внешний вид, вероятно, является правильным решением. Для специальных эффектов вам также следует взглянуть на рамки для художников. Обратите внимание, что они являются частью 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.
Нестандартного внешнего вида и ощущений было бы слишком много. Я предлагаю сначала посмотреть, не соответствуют ли приведенные выше решения вашим потребностям, а затем пойти на это.
Гм .. Может, мне не стоит использовать JComponent. Я не имел в виду, что они статичны, скорее, что большинство классов, являющихся подклассами JComponent (JButton, JLabel и т.д.), наследуют эти методы .. Позвольте мне пояснить это лучше ..
Если вы хотите сильно стилизовать свои компоненты, приобретение стороннего Look-And-Feel и его использование может быть вашим лучшим выбором. Мой личный фаворит - Вещество, у которого даже есть API для создания полностью настраиваемых LAF поверх Substance.
Есть несколько открытых проектов Soruce, которые позволяют стилизовать компоненты Swing в формате, подобном CSS.
Вам стоит взглянуть на проект Java CSS. Он был введен в это сообщение в блоге.
Это не совсем так: setFont, setColor ... не статические методы, они не позволяют вам устанавливать значения по умолчанию для каждого типа компонентов.