2012-02-14 3 views
4

У меня есть тонны jbuttons, jtextfields, jlabels, jmenus, gui items, и это занимает очень много времени, чтобы установить цвет фона и цвет переднего плана по одному за раз.Как установить все цвета компонентов Java Swing GUI и цвета переднего плана (шрифты) сразу?

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

Есть ли способ сделать это более сжато, а не делать это по одному за раз?

+0

КАЖДЫЙ ПРАВЫЙ, поэтому каждый ответ правильный –

+0

+1 для всех там – mKorbel

ответ

4

Вы можете комбинировать Swing с CSS или использовать Swing Look & Почувствуйте, чтобы создать стандартный вид ваших компонентов. Java site говорит:

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

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

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

4

Они все 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")); 
} 
3

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