Lors de l'utilisation de JFrame, JLabel, et Composite

J'ai été, pendant un long moment, se demandant quand utiliser JFrame et Composite. J'ai été dit par des manuels scolaires, en personne, et via une recherche sur internet certaines raisons, mais bien sûr, il m'a fallu regarder la documentation de Java pour comprendre qu'un Composite a le paintComponent(Graphics); méthode, qui permet de spécifier que faire de l'objet lui-même, à la différence de JFrame. Aussi, JPanels sont empilables, ce qui permet pour plus de graphiques complexes que vous pourriez réaliser avec un seul conteneur. J'ai aussi tombé sur le fait qu'un JLabel est également un conteneur. (Il a même un flipper mise en page!) Maintenant, ma question est: quand dois-je utiliser un JLabel et quand devrais-je utiliser un Composite?

//Je sais que vous pouvez mettre JLabels à l'intérieur d'un Composite, et par accident, qu'un Composite est plus cher qu'un JLabel. J'ai, dans le long terme, le plan de la fabrication d'un jeu de caisse qui implique une légère conteneur pour "l'argent" qui se déplace vers le client de la main en cliquant sur. Je pensais à l'aide de JLabels pour les montants monétaires (billets de banque et pièces de monnaie), et le Composite pour servir la vue de dessus de la transaction(s). Je pensais aussi à invoquer repaint() (qui, à ma connaissance, peut simuler l'animation sur "l'argent des étiquettes" eux-mêmes. C'est une double question, mais voyez-vous cela comme le moyen le moins cher pour aller à ce sujet?

  • En général, un Composite est utilisé comme un Conteneur. Vous ajoutez des composants (JLabel, component swing jtextfield, JTable, JButton, etc) sur le panneau et ajouter le panneau de l'image. L'utilisation de plusieurs panneaux en tant que de besoin. Peut-être pour aider à la mise en page du GIU.
  • Vous devez uniquement utiliser un JFrame ou JDialog (ou un autre conteneur de niveau supérieur) pour afficher d'autres contenants (comme JPanel). Vous devez vous efforcer d'utiliser JPanel votre base de ligne de conteneur pour tous vos formulaires, imbrication d'autres panneaux et de contrôles dans que vous voyez l'ajustement. Cela vous offre la possibilité de montrer votre panneau/forme dans l'un conteneur de niveau supérieur que vous aimez.
  • Je suppose que la raison principale de ceci est que JLabels sont principalement conçus pour être juste que: les étiquettes. Ils sont utilisables en tant que conteneurs, et ont repaint(), paintComponent(), mais des problèmes peuvent survenir si vous essayez de l'étiquette de la substance dans le conteneur (le JLabel!) en donnant le JLabel constructeur de la Chaîne argument qui est le texte pour décrire ce qui existe. Un Composite, d'autre part, un Panneau, une portion désignée de l'interface graphique. Étant donné que c'est une partie distincte, il est naturellement un Conteneur, et doit donc être donné le truc. C'est ce qui fait sens aujourd'hui!
InformationsquelleAutor Mike Warren | 2013-04-03