Je rencontre un problème subtile avec le SystemLookAndFeel Swing sous Windows 7. L'applet ci-dessous la SystemLookAndFeel et modifie alors la couleur de fond de MenuBar et MenuItem. Cela fonctionne parfaitement avec Windows XP et fonctionne aussi bien avec Windows 7 ayant le thème Windows Classic activé. Mais cela n'a aucun effet avec le thème standard de Windows 7. Quelqu'un at-il une explication pour cela?Impossible de modifier SystemLookAndFeel sous Windows 7
Cordialement, Martin.
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() {}
}
Merci pour les liens, trashgod. L'aspect et la convivialité de Nimbus sont installés, mais le système par défaut est affiché sous la forme "L'apparence de Microsoft Windows - com.sun.java.swing.plaf.windows.WindowsLookAndFeel". En outre, l'utilisation de ColorUIResource ne change rien. Cela a-t-il fonctionné pour vous? D'autres idées? –
@Martin: Désolé, non. Je peux confirmer votre résultat, et je vois le comportement attendu sur Aqua. Windows L & F peut simplement ignorer les paramètres par défaut du menu, mais je n'ai pas de référence. – trashgod
Merci pour votre aide. Je vais essayer le forum Java quand j'ai réussi à réactiver mon compte. Ou je découvre comment faire un bogue avec Oracle. –