J'ai un problème étrange à voir une image JPEG en mettant en œuvre l'interface Java Swing Scrollable. Mon code me permet de dessiner un rectangle sur le dessus de l'image en utilisant le bouton gauche de la souris. Tout fonctionne bien si je ne touche pas les barres de défilement. Mais dès que je fais défiler vers le bas, un rectangle est dessiné à un endroit différent. Fondamentalement, si je déplace la barre de défilement vers le haut, l'image est dessinée avec la mauvaise coordonnée y. Même comportement si vous faites défiler vers la gauche ou la droite, l'image est dessinée avec la mauvaise coordonnée x. Ces coordonnées x, y représentent le point supérieur gauche (x, y) pour commencer à dessiner le rectangle. Donc, après avoir fait défiler vers le bas et fait un clic gauche sur l'image pour dessiner un rectangle, la coordonnée Y est désactivée. Ci-dessous, un événement que j'ai ajouté à l'un des panneaux contenant les images.Swing Scrollable problem
public void mousePressed(MouseEvent m) {
if (SwingUtilities.isLeftMouseButton(m)) {
....
int y = m.getY(); //This y-coordinate is off whenever I scroll down the image.
...
}
}
Quelqu'un a des indices sur ce qui pourrait être le problème? Je veux dire que je reçois la coordonnée y à partir de l'événement MouseEvent, donc je m'attendrais à ce qu'il ait la valeur correcte.
Merci.
Comme @Ash, j'obtiens des coordonnées locales à l'image, peu importe la position de défilement; vous pouvez aussi vérifier le dessin de votre rectangle dans paintComponent() '. – trashgod
Non, cela n'a pas fonctionné, mais j'ai ajouté un écouteur à la ScrollBars pour obtenir la valeur chaque fois qu'ils sont déplacés, puis en ajoutant cette valeur au point (x, y) du rectangle dessiné et cela a fonctionné. Merci, tu m'as guidé vers le bon chemin pour y remédier. – Marquinio