2017-01-18 2 views
1

Je suis récemment tombé sur un problème lorsque je tentais de créer une superposition pour mon cadre. Le cadre se compose de 2 panneaux, un GamePanel et un OverlayPanel, chacun avec leurs propres méthodes paint. Je les ai séparés afin de garder mon code propre et efficace. Le problème que j'ai maintenant, cependant, est que mes méthodes paintComponent se chevauchent, ce qui fait qu'un seul panneau peint est visible à la fois.Utilisation de deux méthodes de peinture dans deux jpanels dans une jframe

Je comprends que cela est probablement dû au fait que les deux panneaux couvrent l'intégralité de l'écran. Ce qui est peint sur le OverlayPanel, cependant, ne couvre qu'une partie de l'écran.

Le but est que le GamePanel dessine une carte de quelque sorte et le OverlayPanel dessine alors quelque chose comme un rectangle à un endroit donné au-dessus de cette carte.

Mon approche est-elle incorrecte ou y at-il quelque chose qui me manque?

Répondre

1

est mon approche de ce mal, ..

Oui. Il est possible de séparer les opérations de dessin en méthodes séparées dans des classes séparées, tout en conservant l'intégralité de l'opération de peinture effectuée par une seule méthode.

Imaginez il y a une classe Map avec une méthode draw(Graphics2D), et une classe RectangularPlayer aussi avec une méthode draw(Graphics2D). Chaque classe sait comment dessiner ses propres parties à une instance graphique commune. Dans la méthode paintComponent(Graphics) de la classe GameField, appelez les méthodes de dessin pertinentes des classes map et player, ainsi que tous les autres éléments de jeu qui doivent être rendus.