Je suis nouveau sur Java, donc c'est probablement assez simple, mais je ne suis pas sûr de savoir comment le faire fonctionner.Comment puis-je faire en sorte qu'un JPanel se mette à jour une fois que la fenêtre défile?
Fondamentalement, j'ai une classe que j'utilise pour dessiner une grille, qui étend JPanel. J'ai mis cette classe dans une fenêtre, à l'intérieur d'un JScrollPane. Le défilement fonctionne comme je le souhaite, sauf que le dessin dans ma classe ne se met pas à jour une fois que la fenêtre défile. Il met à jour si la fenêtre est redimensionnée cependant. Je pense que je suis supposé utiliser des événements/auditeurs ou quelque chose comme ça, mais je ne suis pas sûr de savoir par où commencer.
éditer: aussi, quand j'ouvre l'un des menus et qu'il se chevauche sur le dessin, la région qui était couverte par les menus n'est pas mise à jour.
Bon, essayons à nouveau: J'ai une classe appelée draw. Ensuite, j'ai un GridBagLayout hors des tirages. Cela crée la grille dont j'ai besoin. J'ai un objet qui se déplace autour de la grille, donc je peux mettre à jour la grille sans avoir à calculer moi-même les rectangles qui doivent être mis à jour.
Ensuite, cette grille se trouve dans un JScrollPane, qui n'est pas sous-classé. J'utilise pack() quand je crée ma fenêtre, mais la chose est, la fenêtre peut être plus grande que la résolution le permet, j'ai donc besoin d'être scrollable. Le défilement fonctionne pour moi, mais il ne met pas à jour l'image quand je l'utilise. Cependant, le redimensionnement de la fenêtre le met à jour.
Ce que je veux est un moyen de redessiner toute ma fenêtre lorsque je clique sur le JScrollPane. Et maintenant, j'ai aussi besoin de redessiner l'ensemble (ou certaines parties, je le verrai plus tard) une fois que j'aurai accédé aux menus, car les parties dessinées de la grille sous les menus ne sont pas mises à jour.
C'est la meilleure façon de le décrire.
Comment puis-je savoir ce qui est actuellement visible? –
Voir la réponse élargie –
Je savais qu'il devait y avoir un meilleur moyen que ma méthode! J'ai enlevé ma réponse en faveur de la tienne :) – coobird