Quantcast
Channel: Sam's » Schachprogramm
Viewing all articles
Browse latest Browse all 3

Java-Phänomen I

$
0
0

Sagt paintComponent() zu equals(): “Yo!”. Antwortet equals(): “Altör!”.

Nachdem die Bürde des GridBagLayouts genommen war, wollte ich natürlich auch bei meinem Schachprogramm vorwärtskommen. Schlafwandlerlike habe ich dann das GridBagLayout eingebaut, schon stolz auf mich gestartet und mir wurde folgenes entgegengeschleudert:

GridBag gekonnt I

Etwas verstimmt habe ich mich dann auf die Suche begeben, woran dieses unerfreuliche und vor allem unerwartete Ergebnis liegen könnte. Ich hab so ziemlich alles ausprobiert.

- Benutz ich wirklich ein GridBagLayout?

- Landen andere Objekte da wo sie hinsollen?

- Initialisiere ich die Felder falsch / Greife ich auf null zu?

- Funktioniert das GridBagLayout in ganz anderen Situationen?

Meine Forschungsstudie brachte dann zwischendurch sowas zu Tage:

Fehlersuche

Ich konnte so ziemlich alles ausschließen: Das GridBagLayout und die Constraints machen genau das, was sie sollen, die Schleifendurchläufe funktionieren auch, ich überschreib das gezeichnete nicht irgendwie, usw.

Heute Morgen habe ich mir dann mein Schachbrett und die Felder geschnappt und kopiert, um jede Schweinerei damit machen zu können, die mir einfällt, ohne die ganze Arbeit zunichte zu machen.

Dabei habe ich dann mal wild auskommentiert und geschaut was passiert.

Unglaublich faszinierend wirkte auf mich dabei die Tatsache: Je nachdem, welche Instanzvariablenbelegung ich im Konstruktor ein- und auskommentierte, zeichnete er andere Sachen.

Wat?

Ja genau. Ich habe dann – eigentlich aus Übersichtsgründen – die ganzen zusäzlichen methoden rausgelöscht, damit ich nur den Konstrutor habe und siehe da, es ging auf einmal.

Doppelwat?

Ich machte die letzten Schritte rückgängig und sah mir an, was ich gerade rausgelöscht hatte.

Da kam mir eine Idee. Unter den Methoden war die equals() und die hashCode()-Methode. Was, wenn ich schlampig programmiert habe, er Dinge als gleich interpretiert, die gar nicht gleich sind, und sich weigert gleiche bzw die selben Dinge zur Contentpane hinzuzufügen?

Das scheint tatsächlich der Fall zu sein. Mit auskommentierter bzw. gefixter equals()-Methode zeichnet er das, was er eigentlich von anfang an zeichnen sollte.

Schachbrett, zwar klein, aber richtig

Auf den Trichter muss man erstmal kommen.

Die Größe wird noch richtig gestellt und die Beschriftung dem GridBagLayout hinzugefügt (ich hoffe ja mal, das wird mich nicht in neue Untiefen stürzen) und dann fehlen noch schon aufgezählte Dinge, doch die Vollendung ist mit diesem Etappenziel definitiv schon näher gekommen.

Weiteres folgt!


Viewing all articles
Browse latest Browse all 3

Latest Images