Einzelne Objekte neu zeichnen

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hi,

habe per google und Suche zwar sehr ähnliche Sachen gefunden, doch leider nichts, was mir in meinem Fall konkret weiter helfen würde.

Folgende Situation:


Ich habe einen Hauptframe, indem dem eine Zeichenfläche positioniert ist (Subklasse von JPanel).

Weiterhin habe ich ein zentrales Datenmodell. Dies ist prinzipiell nichts weiter als eine Liste mit einer bestimmten Anzahl von Objekten in ihr. Jedes Objekt hat als Parameter Koordinaten. Auf der Zeichenfläche soll jedes Objekt der Liste an den entsprechenden Koordinaten gezeichnet werden. Die Zeichnungen der einzelnen Objekte, kann ich mit der Maus per Drag and Drop verschieben, wobei sich die Parameter des Objekten (d.h. die Koordinaten) entsprechend ändern.

So, nun zum Problem: Bisher habe ich in meiner Subklasse von JPanel eine Paint Methode, die halt MVC konform bei einer Änderung des Modells neu zeichnet. Dazu ruft die paint Methode der Zeichenfläche die paint Methoden der einzelnen Objekte auf und übergibt die Referenz auf das Graphics Objekt. Das hat aber einen entscheidenden Nachteil. Auch die nicht verschobenen Objekte werden immer neu gezeichnet was vor allem beim Draggen eines einzelnen Objektes nicht schön ist.

Wie kann ich erreichen das das einzelne Objekt neugezeichnet wird. Hat jemand eine Idee? Irgendwie fehlt mir da der Ansatz.
 
S

SlaterB

Gast
das besteht ja die Frage, ob das Objekt sich mit den anderen überscheindet, und dann vor oder hinter diesen liegt?

oder bewegt es sich auf einem weißen Teil der Fläche?

relativ einfach wäre wahrscheinlich, für den Zeitpunkt der Bewegung die Menge der nichtbewegten Objekte zusammenzustellen (alle außer das bewegte ;) ) und einmalig auf ein internes Bild zu zeichnen,

dann muss bei jedem paint nur das feste 'Hintergrund-'Bild sowie das eine Objekt gemalt werden,

wenn ich mit der Maus über den Destop fahre habe ich aber das Gefühl, dass das noch nicht der Weisheit letzter Schluss war ;)
wahrscheinlich gibts doch irgendwelche Algorithmen/ Einstellungen, um gar nicht erst das ganze Fenster neuzuzeichen, sondern nur einen (auszurechnenden) Bereich,

da muss jemand anders die Idee erklären ;)
 
G

Gast

Gast
Hmmm, wie erkläre ich das. Ok, meine einzelnen Objekte sind prinzipiell Kreise (etwas komplizierter natürlich schon).

verschiedene Kreise können sich auch überschneiden. Wenn ich nun einen Kreis dragge soll auch nur dieser neu gezeichnet werden. In meiner Naivität hoffe ich einfach mal, dass der "darunterliegende Kreis" unbeschädigt bleibt.

Also mal folgendes Beispiel. Ich zeichne einen rot ausgefüllten Kreis und darüber einen schwarz ausgefüllten Kreis. Kann ich die Paint Methode so programmieren, dass ich den schwarzen Kreis löschen/bzw. verschieben kann und der rote Kreis wieder vollständig zum Vorschein kommt? Oder ist bem Drüber zeichnen alles darunter liegende automatisch weg?
 
G

Gast

Gast
Vielleicht aus der Klasse der zu zeichnenden Objekte eine Subklasse von JComponent mit einer paintComponent() Methode machen und die einzelnen JComponent-Objekte auf dem JPanel platzieren? Ob das Problematok mit dem Überschneiden löst, weiß ich aber auch nicht.
 

Wildcard

Top Contributor
Zufälligerweise arbeite ich an einer größeren Applikation die nach einem ähnlichen Prinzip zeichnet.
Es ist völlig ok das sich alle Objekte (zumindest die sichtbaren) neu zeichnen, und das ist im Normalfall auch kein Performance Problem, und auch nicht wahrnehmbar.
Also beschreib bitte mal genauer welcher unerwünschte Effekt bei dir auftritt.
 
G

Gast

Gast
ein unerwünschter Effekt taucht bei mir gar nicht auf. Bin nur immer auf der Suche nach Performance Verbesserungen. Auf meinem P4 läuft auch beim Draggen alles flüssig. Im Extremfall habe ich aber 50 drawOval / fillOval Befehle + 200 drawLine Befehle. Ich denke auf UrAlt Rechnern könnte das beim schnellen Draggen durchaus zu Problemen führen!
 

Wildcard

Top Contributor
Um Performance sollte man sich erst kümmern wenn sie tatsächlich zum Problem wird.
Ein paar fillOvals and drawLines sind nichts. Ich seh da kein Problem.
 
R

Roar

Gast
wenn du swing benutzt hast du noch ein paar mehr als die paar methodenaufrufe, da mach dir mal keine sorgen das sei zu viel ;)

denk über performanceprobleme nach, wenn sie auftreten. du kannst wenn du 1.5 benutzt auch versuchen mit System.setProperty("sun.java2d.opengl", "True"); die opengl pipeline zu aktivieren, was dir aber auch nichts bei uralt rechnern bringt, die kein opengl haben :lol:
 
G

Gast

Gast
nun gut, ihr habt mich überzeugt. DAnn werde ich die Performance erst einmal ignorieren.

Thema kann geschlossen werden. Danke für die schnellen Antworten und Anregungen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JTree Einzelne Objekte färben AWT, Swing, JavaFX & SWT 4
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
P AWT Einzelne Komponenten zur Laufzeit austauschen? AWT, Swing, JavaFX & SWT 3
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
J JavaFX TabPane / Wie füge ich einzelne items ? AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
S Swing JTable - Einzelne Rows einfärben AWT, Swing, JavaFX & SWT 11
L Swing CellRenderer für einzelne Zellen? AWT, Swing, JavaFX & SWT 5
N jFreeChart einzelne Punkte anwählen und Formatieren AWT, Swing, JavaFX & SWT 0
M JavaFX TextArea einzelne Buchstaben färben AWT, Swing, JavaFX & SWT 3
T Swing Einzelne Teile eines Textes färben? AWT, Swing, JavaFX & SWT 10
M Einzelne Ordner im JFileChooser ausgrauen? AWT, Swing, JavaFX & SWT 4
D Swing Mit TableCellRenderer einzelne Zellen markieren AWT, Swing, JavaFX & SWT 3
R einzelne Zeichen in jTable einlesen AWT, Swing, JavaFX & SWT 10
M Swing Einzelne Fenster schließen AWT, Swing, JavaFX & SWT 2
V JTable: Zugriff auf einzelne Zellen AWT, Swing, JavaFX & SWT 4
K Swing CellEditor für einzelne Zellen AWT, Swing, JavaFX & SWT 2
K Swing JTable Editierfunktion für einzelne Zellen ausschalten AWT, Swing, JavaFX & SWT 3
S Einzelne JComboBox in JTable austauschen AWT, Swing, JavaFX & SWT 4
F Einzelne TreeNode an einem JTree editierbar machen AWT, Swing, JavaFX & SWT 3
C Spielfeld Gitter - Einzelne Zellen verändern AWT, Swing, JavaFX & SWT 18
J CellRenderer einzelne zellen Hintergrund AWT, Swing, JavaFX & SWT 9
B Swing Einzelne Zelle in JTable soll NICHT auswählbar sein AWT, Swing, JavaFX & SWT 9
M JTable einzelne Zeilen färben AWT, Swing, JavaFX & SWT 2
A Swing JTree Editable einzelne Nodes editierbar machen! AWT, Swing, JavaFX & SWT 2
T einzelne Zelle einer JTable auswählen und Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 2
T JTable - Einzelne Spalte nicht sortieren? AWT, Swing, JavaFX & SWT 2
R JTable einzelne Zellen selektieren AWT, Swing, JavaFX & SWT 7
H Einzelne Pixel auf Transparenz überprüfen? AWT, Swing, JavaFX & SWT 3
J JTable: Einzelne Zelle selektieren AWT, Swing, JavaFX & SWT 6
X Einzelne Border setzen AWT, Swing, JavaFX & SWT 2
F png-Datei erstellen und einzelne Pixel schreiben AWT, Swing, JavaFX & SWT 2
J MVC- einzelne Sichten auf einer Hauptsicht anzeigen AWT, Swing, JavaFX & SWT 3
S Einzelne Frame Fenster schließen AWT, Swing, JavaFX & SWT 2
S Einzelne Frame Fenster schließen AWT, Swing, JavaFX & SWT 2
P JTextArea - einzelne Zeile löschen bzw einfügn AWT, Swing, JavaFX & SWT 2
B einzelne Zellen scrollbar machen innerhalb einer Tabelle AWT, Swing, JavaFX & SWT 3
E JTable einzelne reihe editierbar machen AWT, Swing, JavaFX & SWT 2
I einzelne Zellen bei JTable markieren AWT, Swing, JavaFX & SWT 3
C JTable: Einzelne Spalten nicht editierbar machen AWT, Swing, JavaFX & SWT 2
N Graphics Objekte scalen mit Veränderung des Bildschirms AWT, Swing, JavaFX & SWT 19
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
Redeason Objekte in meiner GUI verschieben AWT, Swing, JavaFX & SWT 1
_user_q Objekte vom MainController in anderen Controller verwenden und andersherum (NullPointerException) AWT, Swing, JavaFX & SWT 14
_user_q JavaFX Wie kann ich alle Objekte außer eins deaktivieren (das Gleiche mit BoxBlur)? AWT, Swing, JavaFX & SWT 11
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
J Objekte von 2 GUIs zusammenfassen AWT, Swing, JavaFX & SWT 2
T Swing Objekte in Liste AWT, Swing, JavaFX & SWT 2
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
MaxG. Swing Dynamisch grafische Objekte erzeugen AWT, Swing, JavaFX & SWT 12
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
T Rectangle Transparent und darunter liegende Objekte Bedienbar AWT, Swing, JavaFX & SWT 0
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
Z Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern AWT, Swing, JavaFX & SWT 15
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
I Objekte aus contentPane löschen funktioniert nicht AWT, Swing, JavaFX & SWT 3
C Swing Java Objekte AWT, Swing, JavaFX & SWT 4
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
N Swing Alle Objekte anzeigen auch bei JPanel-Überlappung AWT, Swing, JavaFX & SWT 6
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
A Drag and Drop eigener Objekte AWT, Swing, JavaFX & SWT 7
M SWT Durchlagen der SWT Objekte mit Tabulator AWT, Swing, JavaFX & SWT 5
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
S Swing Kopie eines JPanels inkl. aller objekte darin erstellen AWT, Swing, JavaFX & SWT 5
D Swing Objekte bewegen mit MouseMotionListener AWT, Swing, JavaFX & SWT 4
P Objekte anzeigen und verschieben - wie? AWT, Swing, JavaFX & SWT 6
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
G Objekte in und aus einer JTable laden AWT, Swing, JavaFX & SWT 5
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
propra Objekte auf Zeichenfläche verschieben AWT, Swing, JavaFX & SWT 2
propra 2D-Grafik Beliebig viele Objekte auf einer Zeichenfläche zeichnen AWT, Swing, JavaFX & SWT 15
T JList und Objekte AWT, Swing, JavaFX & SWT 7
M Objekte in JPanel bewegen AWT, Swing, JavaFX & SWT 4
E Objekte zu Path2D zusammensetzen AWT, Swing, JavaFX & SWT 2
M verschieben der Objekte in JPanel nur stückchenweise möglich AWT, Swing, JavaFX & SWT 14
4 AWT bestimmte Objekte zeichnen und löschen AWT, Swing, JavaFX & SWT 8
R komplette Objekte in JTable einfügen AWT, Swing, JavaFX & SWT 18
C File-Objekte an JList übergeben und abrufen AWT, Swing, JavaFX & SWT 6
J Objekte aus Defaulttablemodel AWT, Swing, JavaFX & SWT 5
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
S Swing mit ActionListener auf Objekte einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 3
A Swing Dynamisch Objekte erzeugen AWT, Swing, JavaFX & SWT 3
M JGraph Kante ohne Objekte AWT, Swing, JavaFX & SWT 2
P Von einem Panel auf die Objekte des anderen Panels zugreifen AWT, Swing, JavaFX & SWT 3
F Swing Objekte mit Maus verschieben AWT, Swing, JavaFX & SWT 8
T Mehrere sich bewegende Objekte in einem Frame AWT, Swing, JavaFX & SWT 14
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
J SWT 4 Objekte auf einem Composite anordnen AWT, Swing, JavaFX & SWT 5
L SWT Objekte in GC? AWT, Swing, JavaFX & SWT 8
M grafische objekte erstellen und bewegen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben