2013-05-01 2 views
0

Я использую пользовательские цвета с нимбом. После нескольких часов поиска я не могу узнать, как правильно установить цвета фона и переднего плана для JFileChooser.Set filechooser Цвета с Nimbus L & F

Мой (не рабочий) Код:

UIManager.getLookAndFeelDefaults().put("FileChooser.background", Color.DARK_GRAY); 
UIManager.getLookAndFeelDefaults().put("FileChooser.textForeground", Color.white); 
UIManager.getLookAndFeelDefaults().put("FileChooser.foreground", Color.white); 
UIManager.getLookAndFeelDefaults().put("Label.foreground", Color.white); 

По Oracle Nimbus defaults это должно работать, но не делает. Я также не мог найти ответ нигде.

Что я хочу изменить

Я хотел бы иметь ярлыки: (Look In :, Имя папки: Тип файлов) отображается белым цветом и светло-серых границ, отображенных в темно-серый цвет.

Заранее спасибо :)

Update: Я мог бы исправить некоторые цвета текста с обходом:

UIManager.getLookAndFeelDefaults().put("textForeground", Color.white); 
UIManager.getLookAndFeelDefaults().put("Menu.textForeground", Color.white); 
UIManager.getLookAndFeelDefaults().put("ToolTip.textForeground", Color.BLACK); 
UIManager.getLookAndFeelDefaults().put("List.textForeground", Color.BLACK); 
UIManager.getLookAndFeelDefaults().put("TextField.foreground", Color.BLACK); 
UIManager.getLookAndFeelDefaults().put("TextArea.foreground", Color.BLACK); 
UIManager.getLookAndFeelDefaults().put("EditorPane.foreground", Color.BLACK); 

Однако рамки Фон JFileChooser остается светло-серый (в то время как все другие Рамки/Диалоги и MessageDialogs чтят установленный фоновой цвет DarkGray).

Еще один странный, который я теперь заметил, также есть: Popupmenu уважает цвет фона JMenuItem, но игнорирует передний план. Чтобы проиллюстрировать, что я имею в виду, я загрузил новый IMAGE, где я сравниваю «нормальное» popupmenu и одно, которое появляется внутри JFileChooser.

+0

[ваш SSCCE может быть основан на] (http://stackoverflow.com/a/6758985/714968) – mKorbel

+0

А, я только заметил этот комментарий сейчас. Спасибо, я посмотрю на это. – djpalme

ответ

4

У меня была идентичная проблема, касающаяся изменения цвета фона JFileChooser.

Мое решение - новый художник. Думаю, это будет полезно и для вашей цели. Константы.APP_BACKGROUND_COLOR - желаемый цвет фона. А вот пример кода:

UIManager.getLookAndFeelDefaults().put("FileChooser.background", Constants.APP_BACKGROUND_COLOR); 

UIManager.getLookAndFeelDefaults().put("FileChooser[Enabled].backgroundPainter", 
        new Painter<JFileChooser>() 
        { 
         @Override 
         public void paint(Graphics2D g, JFileChooser object, int width, int height) 
         { 
          g.setColor(Constants.APP_BACKGROUND_COLOR); 
          g.draw(object.getBounds()); 

         } 
        }); 
+0

Спасибо, что ответите Николаю.Я предполагаю, что ваш код работает.Я нашел решение, которое исправляет мою проблему - с помощью настроек цвета nimbusBase. Я выбрал ваш ответ так же правильно, как он конкретно устанавливает цвет для JFilechooser которые я задал в своем квесте n изначально. – djpalme

1

Возможно, вы захотите проверить http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/nimbus/NimbusStyle.html за полезную информацию о переопределении цветовой схемы Nimbus.

Используя приведенный ниже код, мне удалось изменить цветовую схему Nimbus для jProgesssBar раньше. Я немного адаптировал его, чтобы он мог работать для вашего jFileChooser. Надеюсь, это сработает!

UIDefaults defaults = new UIDefaults(); 
    defaults.put("FileChooser.background", Color.DARK_GRAY); 
    defaults.put("FileChooser.textForeground", Color.white); 

    yourJFileChooser.putClientProperty("Nimbus.Overrides.InheritDefaults", Boolean.TRUE); 
    yourJFileChooser.putClientProperty("Nimbus.Overrides", defaults); 
+0

Благодарим вас за быстрый ответ, но, к сожалению, ничего не сделали :( Также используя: [code] defaults.put («FileChooser.textForeground», Color.white); [/ code] Я не знаю почему этот Компонент продолжает играть так много. Однако я мог получить его в удобном для использования состоянии, установив эту лошадь назад. Я установил цвет текста по умолчанию по умолчанию textForeground как белый и зафиксировал его черным для компонентов, которым нужен черный шрифт (например, List) – djpalme

0

Нимбус выглядеть и чувствовать себя пользовательский интерфейс по умолчанию имеет много ошибок, которые еще предстоит устранить. Некоторые работы, такие как JProgressBar и JButton фоном градиента, а некоторые нет. Даже я попытался установить то же самое. Лучше писать свой собственный код вместо использования этих значений по умолчанию или просто ждать обновления, исправляющего эти ошибки.

Просто введите компоненты JFileChooser, используя метод getComponents(), а затем выполните следующее.

+0

yes, not, not and (или просто ждать обновления, исправляющего эти ошибки.) Подождите, пока мы не умрем .... Swing находится в режиме maintanace, никаких изменений до Java8 – mKorbel

+0

Спасибо за ваш ответ. Нимбус частично смешон, когда вы хотите установить цвета фона. Для вкладок JTabbedPane вам необходимо переписать метод Paint. Установив базовый цвет, однако я получил его работу, и он выглядит красиво. – djpalme

+0

Ожидание Java 8, Пусть Нимб будет королем! – user12458

0

Спасибо всем за ваш ответ и извинения за мой поздний ответ, поскольку я был занят работой над другими компонентами.

Мне нужна темная тема для моего приложения, которая была согласована во всем приложении.Мое решение, которое сработало для меня, было просто:

Установите цвет DEFAULT для Nimbus.

UIManager.put("nimbusBase", Color.DARK_GRAY); 

Это сделало Трюк с меню внутри JFileChooser. Он также исправляет проблемы с JTabbed Pane и т. Д.

Все, что мне нужно было сделать, это исправить тексты, как они черноват на темно-сером.

+0

Я выбрал ответ Николы Драгичевича так же правильно, как я не задал свой вопрос должным образом. – djpalme

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