как изменить цвет фона для внешнего вида нимба с помощью java

В приложении Java Swing я пробую выглядеть и ощущать нимб. Он отлично выглядит в элементе управления JdesktopPane, но мне нужен другой цвет для всего рабочего стола, но тема в порядке.

Есть ли способ изменить цвет фона внешнего вида нимба?

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

   try {
        for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
          if ("Nimbus".equals(info.getName())) {
          UIManager.setLookAndFeel(info.getClassName());
          break;
         }
        }
       }  
     catch (Exception e) {}

person adesh singh    schedule 05.02.2013    source источник


Ответы (2)


UIManager.put("nimbusBase", new Color(...));
UIManager.put("nimbusBlueGrey", new Color(...));
UIManager.put("control", new Color(...)) 

из учебника l & f

person Sergii Zagriichuk    schedule 05.02.2013
comment
@ user1960524 перед установкой l & f - person Sergii Zagriichuk; 05.02.2013
comment
это сработало для меня, спасибо, могу ли я иметь два стиля в одном проекте - person adesh singh; 06.02.2013

Nimbus рисует фон, используя то, что похоже на процедуры рисования векторного типа, чтобы нарисовать причудливый фоновый узор. Чтобы изменить фон JDesktopPane в случае нимба, вам нужно изменить фоновый Painter, используемый JDesktopPane, чтобы просто заполнить панель нужным вам цветом фона (например, серым). И затем установить свойство "DesktopPane[Enabled].backgroundPainter" с этим объектом Painter. Например, посмотрите код, приведенный ниже:

import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JDesktopPane;
import javax.swing.SwingUtilities;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import com.sun.java.swing.Painter;
import java.awt.Color;

public class NimbusFrame extends JFrame
{
    private JDesktopPane desktop;
    public void prepareAndShowGUI()
    {
        desktop = new MyDesktopPane();
        getContentPane().add(desktop);
        setSize(300,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    class MyDesktopPane extends JDesktopPane
    {
        @Override
        public void updateUI() 
        {
            if ("Nimbus".equals(UIManager.getLookAndFeel().getName())) 
            {
                UIDefaults map = new UIDefaults();
                Painter<JComponent> painter = new Painter<JComponent>() 
                {
                    @Override
                    public void paint(Graphics2D g, JComponent c, int w, int h) 
                    {
                        g.setColor(Color.gray);
                        g.fillRect(0, 0, w, h);
                    }
                };
                map.put("DesktopPane[Enabled].backgroundPainter", painter);
                putClientProperty("Nimbus.Overrides", map);
            }
            super.updateUI();
        }
    }
    public static void main(String st[])
    {
        try
        {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) 
            {
                    if ("Nimbus".equalsIgnoreCase(info.getName())) 
                {
                        UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
        }catch(Exception ex){}
        SwingUtilities.invokeLater( new Runnable()
        {
            public void run()
            {
                NimbusFrame frame = new NimbusFrame();
                frame.prepareAndShowGUI();
            }
        });
    }
}
person Vishal K    schedule 05.02.2013