2011-10-27 4 views
-1
graphiques DonT

J'ai fait un pour mon programme IUG et utilisécouleurs Java charge

UIManager.put("Button.background", new Color(0,0,0)); 
UIManager.put("JButton.background", new Color(0,0,0)); 

pour faire les boutons apparaissent en noir. Malheureusement, cela ne fonctionne pas parfois. Sans modifier le code, il fonctionnera quand je l'exécuterai une fois et ne travaillera pas une autre fois.

L'image suivante est le même bouton dans le même programme après plusieurs fois je l'ai couru. Cela arrive environ 1 fois sur 4, je cours le programme.

Buttons (bouton gauche est correct et la bonne est ce qui arrive parfois en cours d'exécution)

En outre, d'autres choses comme

UIManager.put("control", new Color(15,0,0)); 

sont correctement chargés. Je n'ai jamais eu de problème avec ça et c'est chargé en même temps et au même format.

EDIT: Voici un exemple de code dans lequel les couleurs des boutons ne se chargent pas du tout lorsque l'arrière-plan et d'autres éléments le sont. Ils sont chargés de la même manière et il n'y a aucune erreur de compilation ou d'exécution.

import java.awt.*; 
import javax.swing.*; 
import javax.swing.UIManager.*; 

public class gtst 

{ 

public static void main(String[] args) throws Exception 
{ 

    UIManager.put("Button.background", new Color(1,1,1)); 
    UIManager.put("JButton.background", new Color(1,1,1)); 
    UIManager.put("control", new Color(0,0,0)); 
    UIManager.put("text", new Color(255,220,0)); 

    Frame batFrame = new JFrame("nananananna Batman!"); 

    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) 
    { 
     if ("Nimbus".equals(info.getName())) { 
      UIManager.setLookAndFeel(info.getClassName()); 
      break; 
     } 
    } 

    String username = JOptionPane.showInputDialog(batFrame, "Enter something...:"); 
    } 
} 
+2

Vous devez écrire un petit exemple de code de travail concis qui illustre le problème et l'afficher ici. Souvent, en faisant cela, vous pourrez même résoudre votre propre problème en cours de route. –

+0

n'ai-je pas déjà fait ça? Le code est juste là ... et j'ai décrit le problème, tout ce que vous savez est ce que je sais ... :(Je suis un begginer, donc je ne suis pas sûr à 100% de ce qui provoque ce qui se passe – Cody

+0

Comment est le droit une correcte étant donné que vous voulez que les boutons soient noirs avec la couleur (0, 0, 0)? – NickLH

Répondre

0

Après des jours d'essais et d'erreurs non stop, je compris que, apparemment, dans mon programme la connexion MySQL a été l'origine du problème . Si la connexion MySQL a été initiée au début du programme et que les changements de couleur étaient trop importants, cela pourrait causer un problème (peut-être un décalage?) Et les couleurs ne se chargeraient pas toujours. Peut-être que c'est un problème avec le pilote MySQL ou autre chose, pas sûr, mais pour le réparer, je l'ai juste fait se connecter à MySQL quand il avait besoin de la connexion plutôt qu'au démarrage du programme. Je ne suis pas sûr pourquoi les couleurs ne se sont pas chargées du tout dans l'exemple que j'ai fourni.

0

Comment je fais ce qui est habituellement je fais un bouton comme séparé la variable DButton puis ajouter que mon panneau. Ensuite, pour définir la couleur du bouton, j'utilise le code:

myButton.setBackground(Color.BLACK); 

et cela fait généralement l'affaire.

+0

yah mais son utilisation du cadre pré fait et de faire tout ce séparément sera beaucoup de code et un peu inefficace :( – Cody

+0

Oh utilisez-vous NetBeans pour faire cela? Si oui, alors vous pouvez juste aller dans les propriétés de votre bouton et changer cette – Globmont

0

Essayez d'utiliser le code suivant après avoir effectué les changements dans la UIManager:

SwingUtilities.updateComponentTreeUI(<your_root_ui_componenet>); 
+0

Je ne pense pas que fonctionne :(a ces 4 erreurs:. 'fond n'est pas public dans java.awt.Component, ne peut pas être accessible à partir de l'extérieur package' (pour Button.background/JButton.background). 'UpdateComponentTreeUI (java.awt.Component) dans javax.swing.SwingUtilities ne peut pas être appliqué à (java.awt.Color)' (pour updateComponentTreeUI pour les deux boutons) :( – Cody

+0

Donc, vous avez fait SwingUtilities.updateComponentTreeUI (batFrame Juste avant que vous montriez l'OptionPane> –

+0

oh non, je faisais quelque chose d'autre, bien avec cela il compile et fonctionne sans erreurs mais il ne charge toujours pas le couleurs :( – Cody

Questions connexes