2008-10-14 6 views
2

Хорошо, поэтому у меня появилось приложение поворота, использующее «Системный» внешний вид. Теперь я хочу изменить цвет фона основных панелей на черный. Слишком легко?Java-изменение цвета фона качания?

UIManager.put("Panel.background", Color.BLACK); 

Ну да, только теперь элементы управления в приложении выглядеть глупо, потому что их «тени», за неимением лучшего слова, градуируются исчезать к старому цвету системы по умолчанию (брутто окна серый). Таким образом, на всех элементах управления есть светло-серые «углы», особенно вкладки на JTabbedPane. Я знаю, что он может быть исправлен, потому что если вы измените тему windowsXP на один с другим цветом приложения по умолчанию, элементы управления возьмут на себя этот измененный цвет и их тени исчезнут к нему.

Но я не знаю, что такое UIManager, или даже если вы можете сделать это с UIManger.

Я действительно не хочу менять двигатель L & F, потому что кроме этого он выглядит хорошо.

ответ

1

Вы можете видеть, какие настройки по умолчанию (и их ключи) используются с помощью UIManager.getDefaults(); Затем вы можете перебрать полученный набор ключей (это экземпляр карты).

Так что-то, как это будет показать все клавиши по умолчанию:

for (Object key: UIManager.getDefaults().keySet()) 
{ 
    System.out.println(key); 
} 
2

В целом это немного сложнее. Это зависит от точного LaF, который вы используете.

Например. JGoodies использует собственную цветовую схему, которая переопределяет этот материал.

В общем имена свойств состоят как

COMPONENT_NAME_WITHOUT_J + '.' + PROPERTY. 

К сожалению, имена свойств могут быть получены только от классов реализации ЛАФ. Они не разделены или что-то еще. Каждый компонент имеет свои собственные. Или лучше, это зависит от лени автора, какие пары он использовал. В целом.

Большая помощь делает переопределение панели. * И Button. . Многие компоненты используют Button. Недвижимость.

Попытка, игра, победа :). Желаю тебе удачи :).

PS: Переписать много свойств. Но так работает LaFs.

1

Некоторые элементы управления, такие как JButton, должны иметь setOpaque(false), чтобы позволить новым цветам фона исчезать.

1

Чтобы перечислить все возможные варианты, которые мы можем установить в UIManager изменить LaF, запустите приведенный ниже код ........

import java.util.*; 
    import javax.swing.UIManager; 

    public class UIManager_All_Put_Options 
    { 
    public static void main (String[] args) 
    { 
     Hashtable properties = UIManager.getDefaults(); 
     Enumeration keys  = properties.keys(); 

     while (keys.hasMoreElements()) { 
     String key = (String) keys.nextElement(); 
     Object value = properties.get (key); 
     System.out.printf("%-40s \t %-200s \n", key,value); 
     } 
    } 
    } 

наслаждаться ...

Смежные вопросы