2010-04-12 5 views
0

Salut J'ai créé un exemple de progeam qui donnera le même aspect et la même sensation d'une boîte de dialogue de confirmation et définir la couleur d'arrière-plan en rouge. Mais je ne sais pas quel est le problème que ma couleur d'arrière-plan de l'option est affichée comme couleur par défaut mais pas rouge. J'ai aussi besoin de la même apparence de dialogue de confirmation sur toutes les plateformes.Impossible de changer la couleur d'arrière-plan pour JOptionPane

Voici le code que j'ai écrit. S'il vous plaît aidez-moi à résoudre le problème

JOptionPaneBackground public class {

public static void main(String[] args) throws Exception { 
    // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

    UIDefaults uiDefaults = UIManager.getLookAndFeelDefaults(); 
    List<Object> keys = new ArrayList<Object>(uiDefaults.keySet()); 
    Collections.sort(keys, new Comparator<Object>() { 
     public int compare(Object o1, Object o2) { 
      return (o1.toString()).compareTo(o2.toString()); 
     } 
    }); 
    for (Object key : keys) { 
     System.out.println(String.format("%-40s = %s", key, uiDefaults.get(key))); 
    } 

    UIManager.put("OptionPane.background", Color.red); 
    UIManager.put("Panel.background", Color.red); 

    JOptionPane.showConfirmDialog(null, "Hello World!"); 
} 

}

Répondre

2

Je pense que vous avez besoin d'obtenir une nouvelle instance de UIManager et définir la propriété de couleur du volet sur ce point.

Regardez here le code snippet

Ce code fonctionne bien pour moi sur une machine windows:

public class JOptionPaneBackground { 

public static void main(String[] args) throws Exception { 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

    UIManager.put("OptionPane.background", Color.RED); 
    UIManager.put("Panel.background", Color.RED); 

    JOptionPane.showConfirmDialog(null, "Hello World!"); 
} 

}

+0

Salut Prachi thatnks pour votre réponse rapide. C'est agréable d'avoir une réponse de votre part. Dans mon code si je commenteUIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName()); alors mon programme fonctionne bien mais cela ne donnera pas le même aspect et la même sensation sur toutes les plateformes. mais je veux que les deux choses croisent la plate-forme et l'apparence et la couleur d'arrière-plan aussi –

+0

Quelle version de Java utilisez-vous? J'ai juste essayé votre code sur 1.5 et ça marche pour moi. J'ai fait un commentaire sur la partie de votre code qui affiche toutes les préférences puisque je suppose que c'est juste pour tester. – Prachi

+0

J'utilise Java 1.6 –

Questions connexes