Question

Quelle est la différence réelle entre paint(), paintComponent() et paintComponents() en Java Swing?

J'ai essayé de comprendre ce qui expliquait dans Oracle Docs mais je ne suis pas clair.

Était-ce utile?

La solution

  • Awt, remplacer paint().
  • Conteneur de niveau supérieur swing (les egs sont JApplet, JFrame, JWindow, JDialog..), passer outre paint(). Mais il y a un certain nombre de bonnes raisons ne pas pour peindre dans un TLC. Un sujet pour une question distincte, peut-être.
  • Le reste de la swing, l'emportent paintComponent().
  • Ni l'appel ni l'appel explicitement paintComponents(), laissez à l'API pour l'appeler en cas de besoin.

Assurez-vous également d'utiliser @Override notation chaque fois que l'emporte-coup d'une méthode.

Cela ferait allusion au problème d'essayer de remplacer paintComponent(..) dans un JFrame (il n'a pas une telle méthode), ce qui est assez courant à voir.

Autres conseils

Vous pourriez être intéressé à lire Peinture en awt et swing

Une citation:

Les règles qui s'appliquent aux composants légers de l'AWT s'appliquent également aux composants de swing - par exemple, la peinture () est appelée quand il est temps de rendre - sauf que Swing facteurs que la peinture () appelle trois méthodes distinctes, qui sont invoquées dans le Ordre suivant:

 protected void paintComponent(Graphics g)
protected void paintBorder(Graphics g)
protected void paintChildren(Graphics g)

Les programmes de swing devraient remplacer PaintComponent () au lieu de remplacer la peinture (). Bien que l'API le permette, il n'y a généralement aucune raison de remplacer PaintBorder () ou PaintComponents () (et si vous le faites, assurez-vous de savoir ce que vous faites!). Cette enformation facilite les programmes de remplacer uniquement la partie de la peinture qu'ils doivent étendre. Par exemple, cela résout le problème AWT mentionné précédemment lorsqu'un échec à invoquer Super.paint () a empêché les enfants légers d'apparaître.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top