Comment puis-je définir une couleur d'arrière-plan personnalisée pour les objets JMenuBar
et JMenu
à l'intérieur? J'ai essayé .setBackgroundColor
et ça ne marche pas!Modification de la couleur d'arrière-plan et du texte des objets JMenuBar et JMenu à l'intérieur
Répondre
Créer une nouvelle classe qui étend JMenuBar
:
public class BackgroundMenuBar extends JMenuBar {
Color bgColor=Color.WHITE;
public void setColor(Color color) {
bgColor=color;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(bgColor);
g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
}
}
Maintenant, vous utilisez cette classe au lieu de JMenuBar
et définir la couleur de fond avec setColor()
.
Vous auriez probablement besoin de changer l'opacité des éléments du menu, à savoir:
JMenuItem item= new JMenuItem("Test");
item.setOpaque(true);
item.setBackground(Color.CYAN);
Vous pouvez également réaliser que globalement en utilisant UIManager
, par exemple:
UIManager.put("MenuItem.background", Color.CYAN);
UIManager.put("MenuItem.opaque", true);
La façon la plus simple (je peux penser de) est de changer les valeurs par défaut utilisées par le UIManager
. Cela affectera toutes les barres de menus et éléments de menu dans l'application mais ...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestMenuBar {
public static void main(String[] args) {
new TestMenuBar();
}
public TestMenuBar() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
UIManager.put("MenuBar.background", Color.RED);
UIManager.put("Menu.background", Color.GREEN);
UIManager.put("MenuItem.background", Color.MAGENTA);
JMenu mnu = new JMenu("Testing");
mnu.add("Menu Item 1");
mnu.add("Menu Item 2");
JMenuBar mb = new JMenuBar();
mb.add(mnu);
mb.add(new JMenu("Other"));
JFrame frame = new JFrame("Test");
frame.setJMenuBar(mb);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new JPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
mine ne fonctionnait quand j'ai changé:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
à:
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
Sinon, les couleurs sont restées les mêmes.
façon simple est par .setBackground(Color.RED)
et setOpaque(true)
menubar.setBackground(Color.RED); menu.setBackground(Color.yellow); menubar.setOpaque(true); menu.setOpaque(true);
Cela donnera la couleur de votre choix à la fois la barre de menus et le menu.
- 1. Impossible de déplacer JMenu vers JMenuBar
- 2. Modification de l'arrière-plan et de la couleur du texte
- 3. Objets JMenuBar disparaissant derrière le panneau
- 4. ajouter l'icône et le texte dans JMenu en balançant
- 5. ArrayList et la modification des objets inclus
- 6. Modification de la couleur du texte à l'aide de jquery
- 7. Modification de la couleur et de la taille du texte du chartiste
- 8. Modification d'une couleur et de la couleur du texte d'une case en survol?
- 9. Modification de la couleur du texte du shell (Windows)
- 10. Fickle JMenuBar
- 11. Vérification de la saisie du texte et modification de la couleur
- 12. JPopupMenu et Jmenu problème
- 13. PyLab - changer la couleur du texte et la couleur de fond de la zone de texte
- 14. Modification de la couleur de référence et de la couleur de fond d'un texte dans une zone de texte
- 15. Modification de la couleur du texte dans un calendrier WPF?
- 16. Modification de la couleur du texte dans UINavigationBar
- 17. Erreur JMenubar?
- 18. Modification du texte sublime 3 Couleur de la console
- 19. Modification de la couleur du texte de l'étendue avec JQuery
- 20. CSS avec balise Option - Modification de la couleur du texte
- 21. Modification de la couleur du texte onclick et retour pour les autres éléments
- 22. Définition de l'alignement du texte du titre dans un composant JMenu
- 23. 2 JMenu Questions
- 24. La couleur du texte UILabel change lors de la modification du texte
- 25. Modification de la couleur Texbox
- 26. Comment ajouter dynamiquement JMenus à JMenuBar
- 27. Couleur du texte et du texte d'une valeur int
- 28. jquery: scinder et changer la couleur du texte de l'élément
- 29. Allocation de variable et modification des objets alloués
- 30. JPanel apparaît derrière JMenuBar
Le problème peut être lié à LAF. En utilisant le LAF par défaut, il vous suffit de définir l'arrière-plan de la barre de menus et le menu héritera de cette couleur car elle n'est pas opaque. Publiez votre SSCCE qui démontre le problème. Si vous ne savez pas ce qu'est un SSCCE, vous pouvez toujours chercher sur le web. – camickr
à droite, d'accord pour Nimbus L & A – mKorbel