J'ai un composant swing qui dessine une grande image vectorielle fixe (mais fixe) et superpose des parties de l'image avec du texte qui devrait s'afficher par rapport au port de vue (pas la position absolue) étiquettes en excel (illustrées ci-dessous):Problème java swing clipping
Header
-- [some stuff] ----- [ some stuff] ----
Header2
----- [some stuff] ----- [ some stuff] ----
Cela fonctionne bien sauf lorsque vous faites défiler de gauche à droite. J'essaie de définir les limites du clip dans la région visible dans la méthode paintComponent() de telle sorte que la fenêtre entière est toujours dessiné - mais cela ne semble pas fonctionner:
public void paintComponent(Graphics graphics) {
Graphics2D g = (Graphics2D)graphics;
Shape oldClip = g.getClip();
Rectangle clipBounds = getVisibleRect();
g.setClip(clipBounds);
drawMyImage();
drawMyHeaders();
g.setClip(oldClip);
}
Cependant, cela ne semble pas fonctionner , Je vois la région visible est la bonne forme, mais le réglage du clip n'a aucun effet. Que puis-je faire?
clip: java.awt.Rectangle[x=1762,y=0,width=57,height=182] // clipped while scrolling
vis: java.awt.Rectangle[x=1762,y=0,width=582,height=182] // what I want to paint
Ne pas utiliser 'setClip' dans' paintComponent'! La région de découpage est utilisée par Swing. –
Évidemment, je demande la meilleure approche - mais il ne devrait pas y avoir de mal à la placer dans la région visible, à dessiner, puis à la restaurer. Swing semble s'assurer que le clip est durement fixé à la région sale pendant le défilement, fournissant peut-être un sous-contexte graphique. – Justin