Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler

frankred

Mitglied
Hallo habe ein kleines Problem,
nach einem Fensterresize, passe ich die größe eines Canvas welches einen schwarzen Hintergrund hat an,

manchmal klappt dies jedoch nicht richtig.

Java:
	private void thisComponentResized(ComponentEvent evt) {
		visualisationCanvas.setSize(visualisationCanvas.getWidth(), (int)(visualisationCanvas.getWidth() * 0.8));
		visualisationCanvas.validate();
		visualisationCanvas.repaint();
		playListAndVisualisationPanel.revalidate();
		playListAndVisualisationPanel.repaint();
}

Obwohl ich das Panel und die Canvas neu zeichne gibt es Anzeigefehler: Hier ein kleiner Screenshot:
 
Mischst du Swing und AWT? Wenn du das ganze in einen JFrame mit JPanels packst, sollte es kein java.awt.Canvas sein, sondern eine JComponent (dort dann paintComponent überschreiben)
 
In der Tat handelt es sich um eine AWT Canvas in einer SWING Applikation, das problem ist jedoch dass ich VLCJ benutze eine VLC-Binder für Java, in dem Canvas wird die Audio-Visualisierung von VLCJ dargestellt. Ich kann dem VLCJ MediaPlayer auch nur ein AWT-Canvas übergeben.
Habe jetzt einfach nach dem resize ein setVisible(false) und setVisible(true) dann funktionierts, jedoch flackert die Oberfläche kurz. Ich weiß natürlich dass das die Holzhammermehtode ist....

trotzdem danke für deine Antwort, vielleicht gibt es noch eine andere Lösung?
 
Danke für die Hilfe, ich habe die Artike gelesen und folgender Code scheibt zu funktionieren! 😀


playListAndVisualisationPanel.revalidate();
visualisationCanvas.validate();
this.validate();
 

Zurück
Oben