Pourquoi les fenêtres ne cyan comme prévu?
Le problème ici est que la zone où le contenu du JFrame
est affiché est en réalité le "volet de contenu", et non le contenu du JFrame
lui-même.
Par conséquent, la ligne suivante:
mainFrame.setBackground(Color.CYAN);
est en train de changer la couleur de la JFrame
, mais qui est en fait pas la partie qui est immédiatement visible lorsque l'JFrame
est affiché.
Ce qui est nécessaire est de changer la couleur de ce qu'on appelle le « volet contenu * (s'il vous plaît se référer à How to Use Root Panes pour une illustration), en changeant la ligne ci-dessus pour ce qui suit:
mainFrame.getContentPane().setBackground(Color.CYAN);
Utilisation de cadres dans balançoire pourrait être étonnamment unintuitive au début, donc je recommande fortement de prendre un regard sur les ressources que je l'ai indiqué au bas de cette réponse.
y at-il une différence entre Color.CYAN
et Color.cyan
?
Non, il n'y a pas de différence entre les deux - ce sont les deux constantes de la classe Color
qui sont elles-mêmes Color
. La seule différence est dans les noms des constantes.
Les constantes avec des noms minuscules ont été introduites lorsque la classe Color
a été introduite (qui semble être JDK 1.0, car il n'y a pas de « Étant donné que » la notation dans l'API Java Specification pour la classe Color
), et les noms en majuscules ont été ajoutés plus tard dans JDK 1.4.
probablement l'addition des constantes nommées majuscules ont été ajoutées pour que les constantes dans la classe cohérente Color
avec le Code Conventions for the Java Programming Language qui Section 9: Naming Conventions état que les constantes doivent être en majuscules.
Ressources
Pour plus d'informations sur l'utilisation de cadres, les ressources suivantes de The Java Tutorials serait intéressant:
A propos des constantes de couleur majuscules et camal, oui, c'est-ce que je pensais. Mais s'il n'y a pas de différence, pourquoi existent-ils en double? –
je crois que les noms de camelcase là d'abord, pas tout à fait sûr, mais je crois que c'était juste un cas de ne pas correspondre aux normes de nommage de Sun, et ils ont ajouté ceux correctement capitalisés pour s'adapter à la norme. - et bien sûr ils ne voulaient pas enlever les camelcased car cela casserait les programmes existants. – MeBigFatGuy