Не удается изменить SystemLookAndFeel под Windows 7 - PullRequest
4 голосов
/ 13 августа 2010

Я испытываю незначительную проблему с Swing SystemLookAndFeel под Windows 7. Апплет ниже устанавливает SystemLookAndFeel и затем изменяет цвет фона MenuBar и MenuItem.Это прекрасно работает с Windows XP, а также с Windows 7, в которой активирована тема Windows Classic.Но это не влияет на стандартную тему Windows 7.У кого-нибудь есть объяснение этому?

С уважением, Мартин.

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JApplet;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

@SuppressWarnings("serial")
public class Win7TestApplet extends JApplet {

    public void init() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            UIManager.put("MenuBar.background", Color.decode( "#efecea" ));
            UIManager.put("MenuItem.background", Color.decode( "#9999ff" ));
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }

        // Setup panel
        JPanel mainPanel = new JPanel();
        mainPanel.setBackground( Color.white );
        mainPanel.setLayout( new BorderLayout() );
        mainPanel.setOpaque( true );
        this.getContentPane().add( mainPanel, BorderLayout.CENTER );

        // Create menubar
        JMenuBar menuBar = new JMenuBar();
        getContentPane().add(menuBar, BorderLayout.NORTH);

        // Add menu
        JMenu m_file = new JMenu( "File" );
        menuBar.add( m_file );

        // Add menu items
        m_file.add( new JMenuItem( "First item" ) );
        m_file.add( new JMenuItem( "Second item" ) );
    }

    public void start() {}
    public void stop() {}
    public void destroy() {}
}

Ответы [ 3 ]

2 голосов
/ 14 ноября 2012

Мартин, ты можешь использовать это вместо

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
1 голос
/ 13 августа 2010

Windows 7 может использовать NimbusLookAndFeel, который имеет свои значения по умолчанию и другой способ определять цвета .

Добавление: если нет, вам может потребоваться указать ColorUIResource, например

UIManager.put("MenuBar.background",
    new ColorUIResource(Color.decode("#efecea")));
0 голосов
/ 29 декабря 2010

Я получил ответ на свой вопрос на форуме Oracle Java :

LookAndFeels не требуется использовать any особые свойства UIManager.

Кажется, это слишком правильно.

Martin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...