Java Swing - Composite vs JComponent

Je suis en train de jouer autour avec Java Swing et je suis vraiment confus quand vient Composite vs JComponent. Selon CoreJava Vol 1 (cay horstmann):

Au lieu de l'étendre JComponent, certains programmeurs préfèrent prolonger la
Un composite de classe. Un Composite est destiné à être un conteneur qui peut contenir
d'autres composants, mais il est également possible de la peinture sur elle. Il est
juste une différence. Un panneau est opaque, ce qui signifie qu'il est
responsable de la peinture de tous les pixels à l'intérieur de ses limites. La méthode la plus simple
moyen d'y parvenir est de peindre le panneau avec la couleur d'arrière-plan,
par un appel à super.paintComponent dans la méthode paintComponent de chaque
panneau de sous-classe:

class NotHelloWorldPanel extends JPanel {
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    . . . //code for drawing will go here
  }
}

Je sais ce qui est opaque. Qu'est ce qu'il entend par "Un panneau opaque .. responsable de peinture tous les pixels à l'intérieur de son lié'? Si j'ai bien lu, il dit d'un panel de peinture ses propres domaines à l'intérieur de ses frontières .. Ne pas JComponent n'a que trop?

Ligne de fond est que je ne pouvais pas voir la différence entre le Composite et JComponent. Est-il un des exemples simples où je peux VRAIMENT voir?

Toute aide est appréciée

  • JLabel est un JComponent qui rend le texte, l'ensemble de la zone qui entoure le texte est transparent. Comme vous l'avez dit, un Composite sont JComponents qui sont destinés à être des conteneurs, mais il y a JComponents qui ne permet pas d'autres éléments à l'intérieur, comme le JLabel, JMenuItem.. certains utilisent setComponent, certains utilisent addComponent (conteneurs). Donc JLabel est un exemple de JComponent qui ne seront pas peindre l'ensemble de la zone.
  • NE gardez à l'esprit, que JPanel n'est pas toujours Opaque comme il est déjà mentionné en Java Tutoriels cité ici (Problème 3, point 1) Composite n'est pas opaque pour GTK+ Laf) . Il est donc toujours préférable de la définir explicitement 🙂
  • Je dirais qu'il est préférable de la définir explicitement si l'exactitude de la classe en dépend. Sinon, il vaut mieux le laisser à l'armée libanaise. Après tout c'est ce regard et la sensation est pour.
  • Cela dépend de ce que vous pouvez laisser à l'armée libanaise, comme Nimbus lui-même est assez buggé. Donc je préfère ne pas l'utiliser pour Regarder Et se Sent, ce qui pourrait peut donner odieux comportement 🙂
  • Je pense que nous allons au même point 🙂
InformationsquelleAutor yapkm01 | 2013-10-01