Как установить все фоновые компоненты Java Swing GUI и цвета переднего плана (шрифты) одновременно? - PullRequest
4 голосов
/ 14 февраля 2012

У меня есть тонны jbuttons, jtextfields, jlabels, jmenus, gui элементов, и это очень много времени, чтобы установить цвет фона и цвет переднего плана по одному за раз.

Я хочу иметь возможность быстро / лаконично раскрасить шрифты (на переднем плане) и фона для всех jmenus, jmenuitems, jtextfields, jbuttons и т. Д. Вместо того, чтобы устанавливать их по одному.

Есть ли способ сделать это более лаконично, вместо того, чтобы делать это по одному?

Ответы [ 4 ]

6 голосов
/ 14 февраля 2012

1) самый эффективный способ - использовать Custom Look and Feel , часть из них имеет приятные темы

2) установить значение UIDefault , Список свойств UIDefault

EDIT:

лучше всего UIManager по умолчанию от @ camickr

4 голосов
/ 14 февраля 2012

Они все JComponents, поэтому вы можете сделать ArrayList из всего:

//Adding everything to the ArrayList
ArrayList<JComponent> myComponents = new ArrayList<JComponents>();

JButton b1 = new JButton("Button 1");
myComponents.add(b1);

JMenuItem item = new JMenuItem("Menu Item 1");
myComponents.add(item);

//Coloring the foreground/background
for(JComponent j : myComponents) {
    j.setForeground(new Color("BLUE"));
    j.setBackground(new Color("RED"));
}
4 голосов
/ 14 февраля 2012

Вы можете комбинировать Swing с CSS или использовать Swing Look & Feel для создания стандартного вида ваших компонентов. Java-сайт говорит:

Прежде чем мы перейдем к реализации CSS, давайте рассмотрим альтернативу: пользовательский внешний вид.Swing Look and Feels (L & F) - это наборы классов, которые реализуют фактическое рисование компонентов на очень низком уровне (продумайте линии и растровые изображения).Их можно менять на новые во время выполнения, часто для реализации внешнего вида собственной платформы;то есть JDK для OSX имеет набор классов, которые делают приложения Swing похожими на нативные приложения Aqua с конфетными кнопками и синим оттенком.Пользовательские L & F мощные, но не тривиальные и не быстрые.Обычно вам нужно дотронуться до 20 или около того классов и реализовать целую кучу специального кода для рисования.

Так что CSS проще в использовании.В той же статье дается учебник о том, как реализовать CSS с помощью Swing.Они обеспечивают хорошее пошаговое руководство по созданию правильных правил и последующей реализации их в CSS.Однако это не просто «копировать и вставлять» код.

Если вы просто хотите использовать пакет (не кодируя его самостоятельно), ответы на вопрос Можно ли использовать CSS для Java Swing? предложить Flying Saucer и Jaxx .

3 голосов
/ 14 февраля 2012

Если вы используете Look and Feel, который учитывает константы пользовательского интерфейса в javax.swing.UIManager, то вы можете просто установить их. Есть значения, например, для фон панели. Если нет или если вы не можете управлять этим достаточно, вы можете написать свой собственный делегат пользовательского интерфейса, который рисует определенный компонент (например, javax.swing.plaf.ButtonUI для JButtons). Если даже этого недостаточно, вы можете написать свой собственный внешний вид. Если вы просто расширите Metal LnF, это не так сложно, вы бы написали собственные делегаты пользовательского интерфейса и установили свойства, как указано выше, но централизованно.

...