Java - изменение цвета фона свинга? - PullRequest
2 голосов
/ 14 октября 2008

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

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 14 октября 2008

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

  • контроль
  • controlDkShadow
  • controlHighlight
  • controlLtHighlight
  • controlShadow

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

2 голосов
/ 17 октября 2008

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

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

Как правило, имена свойств состоят из

COMPONENT_NAME_WITHOUT_J + '.' + PROPERTY. 

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

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

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

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

1 голос
/ 19 мая 2011

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

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

1 голос
/ 29 октября 2010

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

1 голос
/ 14 октября 2008

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

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

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