UIManager.getLookAndFeelDefaults(). Mis ("Button.background", buttonColor)
Pour la couleur des boutons de boîtes de dialogue JOptionPane Je ne comprends pas pourquoi cela ne fonctionne pas. Cela devrait. Peut-être un effet secondaire. Nous ne voyons pas tout votre code.
Essayez ce code simple, vous devriez voir seulement les boutons verts.
package swing.uimanager;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
public class JFrameWithUIManger extends JFrame {
public static void main(String[] args) {
new JFrameWithUIManger();
}
public JFrameWithUIManger() {
final UIDefaults lookAndFeelDefaults = UIManager.getLookAndFeelDefaults();
lookAndFeelDefaults.put("Button.background", Color.GREEN);
add(new JButton("A button"));
pack();
setVisible(true);
JOptionPane.showMessageDialog(this, "hello I am a message dialog");
JOptionPane.showConfirmDialog(this, "hello I am a question dialog", "do you like me ?", JOptionPane.YES_NO_OPTION);
}
}
Pour le fond blanc dans le titre, vous avez une couleur (blanche), donc cela semble fonctionner. Peut-être, un problème dans une valeur-clé. Postez s'il vous plaît si vous voulez que nous comprenions mieux.
Modifier
Après avoir vu le code, je compris votre problème. C'est le look and feel utilisé. Vous n'utilisez pas l'aspect et la convivialité par défaut (métal).
Probablement, vous ne savez pas mais tout l'aspect et les sensations dans Swing ne naissent pas égaux.
En fait, certaines options et options de mixage sont prises en charge par certains aspects, mais ne sont pas supportées par d'autres aspects.
Si vous utilisez l'aspect et la convivialité par défaut, vous devriez avoir moins de problèmes de compatibilité.
La meilleure façon de savoir si correctement pris en charge est de faire rapport à certains documents officiels, mais il est vrai que beaucoup d'informations à ce sujet est sec, avec des erreurs, et non détaillées
Dans le lien que vous avez publié dans votre commentaire: http://nadeausoftware.com/articles/2008/11/all_ui_defaults_names_common_java_look_and_feels_windows_mac_os_x_and_linux#Button, les clés affichées dans les tableaux ne signifient pas que les valeurs sont présentes ou modifiables mais que seules les clés sont présentes dans le LAF.
Chaque LAF est responsable de prendre en compte ou non la clé et la possibilité de modifier les valeurs associées aux clés.
J'ai essayé avec Windows LAF de définir uniquement le bouton de couleur d'arrière-plan, il ne fonctionne pas non plus. Donc, cela ne semble pas être un effet secondaire, mais il semble qu'il manque plus de support sur cette fonctionnalité pour Windows LAF.Quoi qu'il en soit, vous pouvez intéresser le Nimbus si vous voulez un look officiel, agréable et plus récent et plus flexible que le look classique en métal. Nimbus document
Il est disponible depuis Java SE 6 Update 10.
Je suis d'accord avec vous, le métal est laid. Mais pourquoi ne pas utiliser nimbus au lieu de Windows LAF? C'est bien. J'ai essayé votre code qui modifie certaines valeurs de lAF avec Nimbus, ça marche bien. Peut-être, vous pourriez avoir quelques modifications mineures pour l'ajuster mais la base devrait être agréable.
Pourquoi créer une nouvelle instance UIManger? Je travaille également sur l'implémentation de mes propres dialogues au cas où je ne pourrais pas faire fonctionner UIManager correctement. – DarkGuardsman
Si vous utilisez votre propre boîte de dialogue, l'instance d'UImanager n'est pas requise. – Sirsendu
Ya, mais UIManager simplifie beaucoup le processus si je peux le faire fonctionner :) – DarkGuardsman