DarthShader
Erfahrenes Mitglied
Hallo,
ich habe eine Frage bezüglich der Mechanik, wie Swing/AWT die Komponenten zeichnet.
Ich habe eine Klasse "PaintComponent" die von "JComponent" erbt. "PaintComponent" überschreibt die Methode "protected void paintComponent( Graphics g )", so wie es laut Sun's Swing Tutorial sein soll. Füge ich meine Komponente in eine JForm ein und stelle es dar, wird alles korrekt gezeichnet.
Nun gabe ich eine neue eigene Komponente namens "PaintContainer", was wieder von JComponent erbt. Ich füge alle meine "PaintComponent" Objekte dem "PaintContainer" per .add Methode hinzu.
Nun möchte ich, dass der "PaintContainer" sowie alle seine Kinder, was ja die "PaintComponent" sind, gezeichnet wird - und zwar "manuell" programmatisch ausgelöst.
Ich dachte, ich bräuchte nun einfach die Methode "paintAll( Graphics g )" von "PaintContainer" aufzurufen, denn laut API soll es die Komponente sowie alle Sub-Komponenten zeichnen (was ja die "PaintComponent"s sein sollen). Aber es wird nichts gezeichnet - das Programm springt nichtmal in die "paintComponent( Graphics g )" Methode der Klasse "PaintComponent". Obwohl Sun's Swing Tutorial sagt, dass die Methode "paint( Graphics g )" auch "paintComponent( Graphics g )" beim Zeichnen aufruft.
Weiß jemand, warum beim "paintAll" des Vater-Objektes nicht "paintComponent(..)" der Kinder aufgerufen wird?
Vielen Dank für Eure Hilfe!
ich habe eine Frage bezüglich der Mechanik, wie Swing/AWT die Komponenten zeichnet.
Ich habe eine Klasse "PaintComponent" die von "JComponent" erbt. "PaintComponent" überschreibt die Methode "protected void paintComponent( Graphics g )", so wie es laut Sun's Swing Tutorial sein soll. Füge ich meine Komponente in eine JForm ein und stelle es dar, wird alles korrekt gezeichnet.
Nun gabe ich eine neue eigene Komponente namens "PaintContainer", was wieder von JComponent erbt. Ich füge alle meine "PaintComponent" Objekte dem "PaintContainer" per .add Methode hinzu.
Nun möchte ich, dass der "PaintContainer" sowie alle seine Kinder, was ja die "PaintComponent" sind, gezeichnet wird - und zwar "manuell" programmatisch ausgelöst.
Ich dachte, ich bräuchte nun einfach die Methode "paintAll( Graphics g )" von "PaintContainer" aufzurufen, denn laut API soll es die Komponente sowie alle Sub-Komponenten zeichnen (was ja die "PaintComponent"s sein sollen). Aber es wird nichts gezeichnet - das Programm springt nichtmal in die "paintComponent( Graphics g )" Methode der Klasse "PaintComponent". Obwohl Sun's Swing Tutorial sagt, dass die Methode "paint( Graphics g )" auch "paintComponent( Graphics g )" beim Zeichnen aufruft.
Weiß jemand, warum beim "paintAll" des Vater-Objektes nicht "paintComponent(..)" der Kinder aufgerufen wird?
Vielen Dank für Eure Hilfe!