Java-изменить цвет фона качели?

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

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

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

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

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


person dalyons    schedule 14.10.2008    source источник


Ответы (5)


Вы можете попробовать это:

  • контроль
  • контрольDkShadow
  • контрольВыделить
  • управлениеLtHighlight
  • контрольная тень

(Я только что нашел их в этом списке: Swing [Архив] - UIManager: настройка фона и JScrollBar )

person RodeoClown    schedule 14.10.2008

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

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

В общем случае имена свойств составляются как

COMPONENT_NAME_WITHOUT_J + '.' + PROPERTY. 

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

Очень помогает переопределение Panel.* и Button.. Многие компоненты используют свойства Button..

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

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

person Rastislav Komara    schedule 16.10.2008

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

Итак, что-то вроде этого покажет все ключи по умолчанию:

for (Object key: UIManager.getDefaults().keySet())
{
    System.out.println(key);
}
person RodeoClown    schedule 14.10.2008

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

person Craigo    schedule 29.10.2010

Чтобы перечислить все возможные параметры, которые мы можем установить в 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);
      }
    }
  }

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

person gtiwari333    schedule 19.05.2011