Ich erstellte eine JLabel
als Bild und fügte sie zu JScrollPane
und dann zu meiner JFrame
. Als nächstes habe ich paint()
Methode in meinem JFrame
überschrieben und drawLine()
Methode verwendet, um 4 Linien zu zeichnen (sie sehen aus wie ein Rahmen).Wie neu zu streichen, nachdem Sie blättern?
Jetzt, wenn ich scroll, verschwinden meine Linien und sie nicht repaint()
. Nur wenn ich Maßnahmen wie Minimalisieren, Maximieren usw. durchführe, kann ich sie sehen.
Wie erzwingen Sie repaint()
nach der Verwendung ScrollPane
?
Implementieren Sie Ihre benutzerdefinierte Malerei in 'paintComponent()', nicht 'paint()'. Siehe [hier] (https://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html). – Frecklefoot
und wenn das nicht funktioniert - setzen Sie einen Breakpoint in die paintComponent-Methode, um zu sehen, ob sie tatsächlich aufgerufen wird. In direkter Antwort auf Ihre Frage finden Sie die zweite Antwort auf diese Frage: http://stackoverflow.com/questions/6561246/scroll-event-of-a-jscrollpane. Setzen Sie einen ChangeListener auf den Viewport Ihres Scrollpanels. – Jeutnarg