Rätselhaftes Verhalten von Collections

Status
Nicht offen für weitere Antworten.

Jay1980

Bekanntes Mitglied
Servus,

ich habe drei Klassen einmal eine Gui Klasse die den MouseListener von Swing implementiert und die dann die Methode addPoint der Logikklasse bei einem Mausklick abfeuert. Die dritte Klasse ist ein abgeleitetes JPanel, das dann den Zeichenvorgang übernimmt.

Die Punkte liegen in den Klassenattributen in ArrayLists aber ich kann mir gerade nicht erklären warum, es so ist, dass meine Debugmeldungen ein so wirres Ergebnis zurückliefern ... es scheint, dass ich völlig daneben liege, wenn es um die tiefen oder flachen Kopien geht und ob ich nun auf der Referenz arbeite oder auf einer Wertkopie.

Ich habe mal ein kompilierbares Beispiel angehangen.

Anwendung unter Anwendung - Geometrie - ConvexHull starten. Ich habe die Debugmeldungen drin gelassen, bei den ersten beiden JOptionPanes sieht man wie es laufen sollte, wenn man mittels Linksklick aber einen Punkt der Zeichenfläche zufügt, sollten die anderen sichtbar bleiben - tun sie aber nicht?!

Danke falls sich das jemand ansieht, ich bin mit meinem Latein aktuell ziemlich durch...

EDIT: das mit dem Beispiel mache ich zum ersten Mal, hoffe das habe ich so gemacht wie es sein sollte, ansonsten bin ich für jegliche Tipps dankbar. - (geänderte) Datei ist zwei Posts weiter unten.
EDIT2: ich habe vier Posts weiter unten die Links zum Pastebin gesetzt, jetzt kann man die Klassen einfach sehen oder via c&p in die IDE nehmen. Das mit dem File-Export habe ich zum wiederholten Male nicht gesch... bekommen.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
in dem Jar sind nur .class-Dateien, was soll man denn damit machen? ;)
 

Jay1980

Bekanntes Mitglied
Ha, man lernt nie aus :) ...

habe das File mal geändert und beim Export in Eclipse einen Haken mehr gesetzt. Jetzt sollte es klappen.
 
S

SlaterB

Gast
die Klasse JobaConvexHull fehlt, da kann man recht wenig machen,

von der wird eine ArrayList an das Panel weitergereicht,
neue Punkte anscheinend nur in die JobaConvexHull eingefügt,
ob die sie nun auch in die ArrayList des Panels schreib oder nicht, ist ohne Code nicht ersichtlich, aber das müsste man doch genau debuggen können?
 

Jay1980

Bekanntes Mitglied
Danke Slater fürs darauf aufmerksam machen, dass immer noch nicht alles da ist, schwere Geburt.

Ich werde nun mal die Links zu den drei Klassen in einem pastebin posten, dann kann sie jeder sehen oder via copy & paste in seine IDE nehmen.

Das Synchronisieren habe ich mir so gedacht: Ich arbeite auf der Collection in der Klasse JobaConvexHull, dann bevor es ans Zeichnen geht, werden die Collections gecleart, etwa diese, die die alten vorab berechneten Werte speicherten, damit diese wieder frisch sind. Damit die Collections aus der Klasse JobaDrawPanelConvexHull nicht die Klassen aus JobaConvexHull beeinflussen, bezieht die Zeichenpanelklasse alle Daten aus einer Kopie des JobaConvexHullObjekts, hier 'jchcopy'.

Also hier die drei Klassen:
JobaGui
Java pastebin - collaborative debugging tool

Klasse JobaConvexHull:
Java pastebin - collaborative debugging tool

Klasse JobaDrawPanelConvexHull
Java pastebin - collaborative debugging tool
 
S

SlaterB

Gast
hier mal DebuggingCode:

Java:
		// neue Daten mit initialize() schicken
		System.out.println("vor init: "+pointsToDrawJobaGui);
		jdpch.initialize(flag, pointsToDrawJobaGui, newCoordinateSystemMaxXJobaGui, 
                    newCoordinateSystemMaxYJobaGui); // jdpch-clear wird hier  automatisch vorgeschalten ...
		System.out.println("nach init: "+pointsToDrawJobaGui);
Ausgabe:
Code:
vor init: [java.awt.Point[x=96,y=270], java.awt.Point[..]
nach init: [java.awt.Point[x=96,y=270], java.awt.Point[..]
vor init: [java.awt.Point[x=96,y=270], java.awt.Point[..]
nach init: []
beim zweiten initialize-Aufruf leert also das Panel selber die Liste,
ich vermute, dass es im Panel an
clear( String flag )
und dort an
pointsToDraw.clear();
liegt,

denn dieses alte pointsToDraw scheint genau die aktuelle Punkt-Liste zu sein,
also in der Richtung weiterarbeiten,
entweder die alte Liste nicht leeren (was stört sich das Panel daran?) oder immer eine neue Liste übergeben
oder das Panel legt sich selber eine Kopie der Liste an und darf die dann auch leeren oder was auch immer
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
javamax2000 Sehr sonderbares Verhalten Allgemeine Java-Themen 6
kodela Unterschiedliches Verhalten von BufferedReader Allgemeine Java-Themen 3
J Unvorhersehbares Verhalten - benutze ich die falsche Bedingungsprüfung oder brauche ich Threads? Allgemeine Java-Themen 12
N Best Practice Allgemeines Verhalten für ein Interface implementieren? Allgemeine Java-Themen 7
Thallius Merkwürdiges Verhalten von Swingworker.cancel() Allgemeine Java-Themen 2
T Merkwürdiges Thread-Verhalten Allgemeine Java-Themen 6
Tommy Nightmare Merkwürdiges Verhalten bei der Datenzuweisung Allgemeine Java-Themen 4
F JTable Pfeiltasten-Verhalten Allgemeine Java-Themen 1
Thallius Swing Merkwürdiges Verhalten beim Panel Tausch Allgemeine Java-Themen 3
W LocalDateTime Verhalten unerklärlich Allgemeine Java-Themen 1
Thallius Merkwürdiges StringBuilder verhalten (Char Encoding) Allgemeine Java-Themen 6
C Unterschiedliches Verhalten Editor und deployte Application Allgemeine Java-Themen 3
S Threads ThreadPoolExecutor eigenartiges verhalten Allgemeine Java-Themen 5
A Java Verhalten bei parallelem Aufruf derselben Methode?? Allgemeine Java-Themen 2
P Applet-Zugriffsrechte: merkwürdiges Verhalten Allgemeine Java-Themen 4
M Threads Viele Aufrufe aus Thread, komisches Verhalten Allgemeine Java-Themen 8
S getChildAt() Verhalten Allgemeine Java-Themen 4
S Frage zu Threads (Sichtbarkeit und Verhalten) Allgemeine Java-Themen 11
R Merkwürdiges Verhalten der equals Method Allgemeine Java-Themen 4
1 Collections Generics, internes Verhalten Allgemeine Java-Themen 16
S Collections Unverständliches Verhalten... Allgemeine Java-Themen 4
M Nach Programmdurchlauf werden Zeichen falsch dargestellt + Anderes Verhalten unter Windows Allgemeine Java-Themen 6
C Komisches Verhalten zwischen Set und List bei contains Allgemeine Java-Themen 6
S (Doppel)Klick-Verhalten vom Desktop unter Java imitieren. Allgemeine Java-Themen 5
A Seltsames Verhalten von JUnit-Tests im Zusammenspiel mit Ant Allgemeine Java-Themen 6
S Verhalten von System.getenv() in Ubuntu / Linux Allgemeine Java-Themen 12
hdi Verhalten bei nicht behandelten Exceptions Allgemeine Java-Themen 2
M Unerklärliches Verhalten bei Variableninitialisierung Allgemeine Java-Themen 11
S Verhalten der Klasse TreeSet... Allgemeine Java-Themen 4
S Jar und Exe verhalten sich unterschiedlich unter Vista Allgemeine Java-Themen 8
M Seltsames Verhalten eines StringReaders Allgemeine Java-Themen 2
spacegaier HeapSpace der VM ändern -> Verhalten von JARs und EXEs Allgemeine Java-Themen 10
M merkwürdiges Verhalten von JUnit4 Allgemeine Java-Themen 2
M JList seltsames verhalten. Allgemeine Java-Themen 5
K Seltsames Verhalten von byte[] und Strings Allgemeine Java-Themen 6
S Seltsames Verhalten von split() Allgemeine Java-Themen 3
K Überschreiben von 'static'-Methoden hat anderes Verhalten? Allgemeine Java-Themen 2
A Streams: merkwürdiges Verhalten Allgemeine Java-Themen 7
A Streams - merkwürdiges Verhalten Allgemeine Java-Themen 2
K jackson deserializer - Collections Allgemeine Java-Themen 6
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
Hacer Generics & Collections Allgemeine Java-Themen 8
C Generic collections und static typing Allgemeine Java-Themen 4
J Collections, Locks und volatile ? Allgemeine Java-Themen 1
A Compiler-Fehler Woher kommt der NullPointer? (Collections & Iterator) Allgemeine Java-Themen 7
E Collections Collections die Subojekte einer Klasse enthält? Allgemeine Java-Themen 7
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
B zwei-dimensionale Collections bzw. Array mit Indizes Allgemeine Java-Themen 3
Landei immutable Collections Allgemeine Java-Themen 27
J Collections in Instanzattributen als Kopie übergeben Allgemeine Java-Themen 4
A Collections.emptySet() und triärer Operator Allgemeine Java-Themen 5
M Double Braces Notation um Collections zu initialisieren Allgemeine Java-Themen 9
W Komplexität von addAll() bei Collections Allgemeine Java-Themen 4
K Collections oder Vektoren sicher zu serialisieren? Allgemeine Java-Themen 5
W sortierte Iteration über Set oder Map, bzw. Collections Allgemeine Java-Themen 5
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
S Wie "zufällig" ist Collections.shuffle(.) Allgemeine Java-Themen 1
S Collections.binarySearch(list,"a") Allgemeine Java-Themen 7
T Sortierung mit Collections.sort() Allgemeine Java-Themen 4
J Collections Allgemeine Java-Themen 2
F Vererbung, Generizität und Collections. Allgemeine Java-Themen 7
G Collections als Array implementieren Allgemeine Java-Themen 2
F Naming Conventions (Collections) Allgemeine Java-Themen 8
K Elegante Lösung zum Manipulieren von Collections gesucht Allgemeine Java-Themen 16
T Collections/Arrays sortieren => ä, ö, ü, ß Groß/klein Allgemeine Java-Themen 3
R Probleme mit Collections - Teil 2 Allgemeine Java-Themen 4
R Probleme mit Collections Allgemeine Java-Themen 5
L-ectron-X Problem mit Collections.sort() mit Java 1.5 Allgemeine Java-Themen 9
C Collections.binarySearch Allgemeine Java-Themen 1
R Entsprechung von Stack() im Collections Framework...? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben