Zeichnen in einem JFrame nach Resize

w!ckeD

Mitglied
Hey Leute,

ich programmiere derzeit an einem Spiel, welches ich in diesem Semester im Rahmen eines Uniprojekts mache. Die GUI läuft in einem JFrame, wobei meine selbst geschriebene GUI-Klasse den JFrame extendet. Derzeit wird noch alles ausnahmslos über die drawRect- und drawString-Methode gezeichnet (Grafiken kommen evtl. später). Ich zeichne dabei, im ein Flimmern auf dem Bildschirm zu vermeiden, erst alles auf ein BufferedImage, welches ich dann auf ein JPanel auf dem JFrame zeichne. Dabei bin ich auf folgendes Problem gestoßen:
Wenn ich den JFrame verkleinere, arbeitet meine resize-Methode ohne Probleme und die Spielansicht wird entsprechend der JFramegröße passend kleiner hineingezeichnet (ich mache das über ein AffineTransform-Objekt und ne Menge Rumgerechne...)
Ziehe ich den JFrame jedoch größer, als er anfangs war, wird zwar alles passend skaliert, jedoch wird die Spielansicht nur bis dahin gezeichnet, wo die Grenzen des Frames bei Programmstart waren, der Rest des JFrames bleibt weiß.
Ich passe bei jedem Resize die Größe des JPanels an und erstelle ein neues BufferedImage, welches die Größe des JPanels erhält. Mir ist wirklich schleierhaft, wieso nicht auf dem kompletten Fenster gezeichnet wird...
Ich hoffe, ich habe alles verständlich beschrieben, ansonsten lege ich dahingehend natürlich gerne noch nach ;)

besten Gruß,
w!ckeD
 

w!ckeD

Mitglied
Hey und erst Mal danke, dass sich jemand überhaupt erst Mal den Thread so zeitig angesehen hat. Nachdem ich meinen Code umstrukturiert hab und das JPanel nun jedes Mal neu erstelle, klappt das Ganze. Ich scheine da irgendwelche Abhängigkeiten nicht gesehen zu haben.
Code hätte ich auch sofort dabeigepackt, aber der relevante Code ist recht verstreut über die Klasse und auch nicht sehr leserlich, deswegen wollte ich es so probieren. Vielleicht gibt's ja generelle Dinge, die ich nicht beachtet habe.

besten Gruß,
w!ckeD
 
V

vanny

Gast
Naja ohne Code hier mal die Klassiker.

- die paint(); - Methode wurde verwendet, dann lieber die paintComponent(); überschreiben
- es wurde irgendwo mit getGraphics(); gearbeitet, (uuuuuuuuunbedingt vermeiden)
- der Gameloop bekommt deine Größenänderung nicht richtig mit (ein paar sysout sollten Aufschluß geben)
- da das Erstellen eines neuen JPanels (*autsch*) ja Abhilfe schafft, versuche mal ein reValidate();


das sind so die Eckpunkte, die mir erstmal einfallen.

Gruß Vanny
 

w!ckeD

Mitglied
Okay jetzt mal aus reiner Neugierde: Warum leiber mit der paintComponent arbeiten? Und mit getGraphics() hab ich bis jetzt gut und zuverlässig gearbeitet, ich hab aber öfter gelsesen, dass man es nicht verwenden soll - warum?
Eigentlich gibt es keinen Gameloop, das das Ganze im MVC-Pattern mit Observer-Pattern realisiert ist, die GUI kriegt mit, wenn sie sich neu zeichnen soll und kann das außerdem maximal ein Mal pro Taktschlag tun.
Danke für dien Feedback!

besten Gruß,
w!ckeD
 
V

vanny

Gast
Okay jetzt mal aus reiner Neugierde: Warum leiber mit der paintComponent arbeiten?...

[DUKE]public void paint(Graphics g)
Invoked by Swing to draw components. Applications should not invoke paint directly, but should instead use the repaint method to schedule the component for redrawing.
This method actually delegates the work of painting to three protected methods: paintComponent, paintBorder, and paintChildren. They're called in the order listed to ensure that children appear on top of component itself. Generally speaking, the component and its children should not paint in the insets area allocated to the border. Subclasses can just override this method, as always. A subclass that just wants to specialize the UI (look and feel) delegate's paint method should just override paintComponent.[/DUKE]
 

w!ckeD

Mitglied
Aha, wieder was dazu gelernt. Ich muss gestehen, dass ich mir die Java API nicht so serienmäßig zu Gemüte führe. Vielen Dank für die Antwort ;)
 
V

vanny

Gast
Ich bin auch kein API-Wurm xD.
Wenn ich aber 5 mal lese: "tu dies an Stelle von dem da", dann schau ich schon mal fix gezielt da rein;)

Gruß Vanny
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Auf einem Hintergrundbild zeichnen AWT, Swing, JavaFX & SWT 2
P In einem Java-Fenster zeichnen AWT, Swing, JavaFX & SWT 10
S auf einem mit Netbeans (GUI) erstellten JPanel (eines JFrames) zeichnen? AWT, Swing, JavaFX & SWT 7
A SWT Auf einem Tabb (FormPage) einzelnes Composite neu zeichnen AWT, Swing, JavaFX & SWT 7
P Diagramm in einem Applet zeichnen AWT, Swing, JavaFX & SWT 4
L Auf einem Panel Zeichnen AWT, Swing, JavaFX & SWT 6
W Zeichnen verschiedener geom. Figuren in einem JPanel AWT, Swing, JavaFX & SWT 5
G Polygonzug in einem Frame zeichnen. Ich raffs nicht AWT, Swing, JavaFX & SWT 4
S Zeichnen in einem JPanel AWT, Swing, JavaFX & SWT 15
S Problem mit dem Zeichnen einer Linie auf einem JPanel AWT, Swing, JavaFX & SWT 30
H Punkte auf einem JPanel zeichnen AWT, Swing, JavaFX & SWT 4
S in einem JComponent zu zeichnen AWT, Swing, JavaFX & SWT 4
P auf einem geladenen Bild zeichnen AWT, Swing, JavaFX & SWT 28
S Auf einem JTabbedPane eine Grafik zeichnen AWT, Swing, JavaFX & SWT 11
T Image auf Panel in einem Internal Frame zeichnen AWT, Swing, JavaFX & SWT 5
M In einem JLabel Kreise zeichnen AWT, Swing, JavaFX & SWT 4
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
S Event Handling Neu zeichnen nur wenn Berechnung fertig ist AWT, Swing, JavaFX & SWT 4
W JavaFX Ich kann keinen Kreis richtig zeichnen AWT, Swing, JavaFX & SWT 8
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
G Dreieck aus Pixeln zeichnen AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
Z Swing Graph zeichnen lassen AWT, Swing, JavaFX & SWT 16
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
L Swing zeichnen AWT, Swing, JavaFX & SWT 14
S GUI Kreuz zeichnen und Position ausgeben AWT, Swing, JavaFX & SWT 3
S GUI Kreis zeichnen AWT, Swing, JavaFX & SWT 13
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
L Swing Ein Rechteck in ein Grid Zeichnen AWT, Swing, JavaFX & SWT 5
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
E Transparent zeichnen AWT, Swing, JavaFX & SWT 2
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
T Tic Tac Toe - GUI Linien zeichnen AWT, Swing, JavaFX & SWT 14
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
Soloeco Graph zeichnen AWT, Swing, JavaFX & SWT 1
G Zeichnen Programm AWT, Swing, JavaFX & SWT 1
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
D Quadrat, Rechteck zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
A Swing JRadioButton zeichnen nicht AWT, Swing, JavaFX & SWT 4
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
S Parallele Linien zeichnen AWT, Swing, JavaFX & SWT 5
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
L JavaFX JavafX Timelime zeichnen und schön stylen? AWT, Swing, JavaFX & SWT 2
I JFrame neu zeichnen, nicht überzeichnen! AWT, Swing, JavaFX & SWT 2
I Spielsteine zeichnen und entfernen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
H Swing BufferedImage zeichnen AWT, Swing, JavaFX & SWT 1
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
S 2D-Grafik MouseDragged Linien zeichnen AWT, Swing, JavaFX & SWT 4
M Zeichnen ohne vorherige Linien zu löschen AWT, Swing, JavaFX & SWT 2
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
T Swing / Kreis zeichnen AWT, Swing, JavaFX & SWT 2
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
I Pfeil zeichnen am Ende einer Linie AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
F Zeichnen des Button AWT, Swing, JavaFX & SWT 4
B Zeichnen mit paintComponent? Oder anders? AWT, Swing, JavaFX & SWT 15
C Swing Aus verschiedenen Klassen zeichnen. AWT, Swing, JavaFX & SWT 2
C Swing BufferedImage zeichnen und JLabels setzen. AWT, Swing, JavaFX & SWT 17
M Kein Zeichnen der Figuren auf JPanel AWT, Swing, JavaFX & SWT 4
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
P SWT Nebula Gallery - Bildbereiche zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Zeichnen einer sich bewegenden Box mit BufferStrategy zieht Spur AWT, Swing, JavaFX & SWT 2
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
Helgon Swing Mit Swing zeichnen / NetBeans GUI AWT, Swing, JavaFX & SWT 11
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
J JApplet und Zeichnen AWT, Swing, JavaFX & SWT 8
P 2D-Grafik NPE beim Zeichnen auf Graphics g AWT, Swing, JavaFX & SWT 8
4 Swing Graphen selber zeichnen AWT, Swing, JavaFX & SWT 2
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
T Zeichnen von getSubimage funktioniert nicht AWT, Swing, JavaFX & SWT 7
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
N JPanel neu zeichnen AWT, Swing, JavaFX & SWT 10
D Zeichnen eines Barplots AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben