From bd5c773204fb0951251680d421fb6b56bd38d367 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Mon, 27 Apr 2020 17:40:24 +0200 Subject: [PATCH] CustomMouseListener als lokale Klasse implementiert dadurch kann auf das Zuweisen der CustomMouseListener mit Hilfe des Arrays cmls[] verzichtet werden --- src/gfn/marc/Zug.java | 50 ++++++++++++++----------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/src/gfn/marc/Zug.java b/src/gfn/marc/Zug.java index 2b6b052..b0b3f4d 100644 --- a/src/gfn/marc/Zug.java +++ b/src/gfn/marc/Zug.java @@ -12,11 +12,6 @@ public class Zug { private static int zugNummer = 0; private static Spieler spieler; private static boolean zugLaeuft; - private static CustomMouseListener[] cmls = new CustomMouseListener[9]; - - public Zug() { - createMouseListeners(); - } public static void setZugNummer(int zugNummer) { Zug.zugNummer = zugNummer; @@ -36,8 +31,7 @@ public class Zug { // Mouselistener auf Felder setzen, die noch nicht gesetzt wurden for (int i = 0; i < spielfeld.getFelder().length; i++) { if (!spielfeld.getFelder()[i].isGesetzt()) { - cmls[i].setSpieler(spieler); - spielfeld.getFelder()[i].getLabel().addMouseListener(cmls[i]); + spielfeld.getFelder()[i].getLabel().addMouseListener(new CustomMouseListener(i)); } } @@ -52,14 +46,25 @@ public class Zug { // MouseListener von allen Feldern entfernen for (int i = 0; i < spielfeld.getFelder().length; i++) { - spielfeld.getFelder()[i].getLabel().removeMouseListener(cmls[i]); + spielfeld.getFelder()[i].getLabel().removeMouseListener(new CustomMouseListener(i)); } } - public static void createMouseListeners() { - for (int i = 0; i < spielfeld.getFelder().length; i++) { - cmls[i] = new CustomMouseListener(f, spielfeld.getFelder()[i]); + // Lokale Klasse für CustomMouseListener + static class CustomMouseListener extends MouseAdapter { + + int i; + + public CustomMouseListener(int i) { + this.i = i; + } + + // Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen + @Override + public void mouseClicked(MouseEvent mouseEvent) { + spielfeld.getFelder()[i].setZeichen(spieler.getForm()); + Zug.setZugLaeuft(false); } } @@ -82,27 +87,4 @@ public class Zug { } -class CustomMouseListener extends MouseAdapter { - - private Fenster f; - private Feld feld; - private Spieler spieler; - - public CustomMouseListener(Fenster f, Feld feld) { - this.f = f; - this.feld = feld; - } - - public void setSpieler(Spieler spieler) { - this.spieler = spieler; - } - - // Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen - @Override - public void mouseClicked(MouseEvent mouseEvent) { - this.feld.setZeichen(spieler.getForm()); - Zug.setZugLaeuft(false); - } -} -