CustomMouseListener als lokale Klasse realisiert

dadurch wird das Array "cmls[]" unnötig
This commit is contained in:
Marc Koch 2020-04-27 16:37:09 +02:00
parent 72fa1c57dd
commit dd061d182e
Signed by: marc
GPG Key ID: AC2D4E00990A6767
1 changed files with 25 additions and 55 deletions

View File

@ -1,8 +1,8 @@
package gfn.marc; package gfn.marc;
import java.awt.*; import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Zug { public class Zug {
@ -11,15 +11,16 @@ public class Zug {
private static int zugNummer = 0; private static int zugNummer = 0;
private static boolean zugLaeuft; private static boolean zugLaeuft;
private static CustomMouseListener[] cmls = new CustomMouseListener[9]; private static CustomMouseListener[] cmls = new CustomMouseListener[9];
private static Spieler spieler;
public Zug() { public Zug() {
Zug.spielfeld = TicTacToe.getSpielfeld(); Zug.spielfeld = TicTacToe.getSpielfeld();
Zug.f = TicTacToe.getF(); Zug.f = TicTacToe.getF();
createMouseListeners();
} }
// Zuganzahl hochzählen und Titelleiste setzen // Zuganzahl hochzählen und Titelleiste setzen
public static void macheZug(Spieler spieler) { public static void macheZug(Spieler spieler) {
Zug.spieler = spieler;
if (zugNummer == 9) { if (zugNummer == 9) {
Zug.zugNummer = 0; Zug.zugNummer = 0;
} }
@ -31,8 +32,7 @@ public class Zug {
// Mouselistener auf Felder setzen, die noch nicht gesetzt wurden // Mouselistener auf Felder setzen, die noch nicht gesetzt wurden
for (int i = 0; i < spielfeld.getFelder().length; i++) { for (int i = 0; i < spielfeld.getFelder().length; i++) {
if (!spielfeld.getFelder()[i].isGesetzt()) { if (!spielfeld.getFelder()[i].isGesetzt()) {
cmls[i].setSpieler(spieler); spielfeld.getFelder()[i].getLabel().addMouseListener(new CustomMouseListener(i));
spielfeld.getFelder()[i].getLabel().addMouseListener(cmls[i]);
} }
} }
@ -47,17 +47,11 @@ public class Zug {
// MouseListener von allen Feldern entfernen // MouseListener von allen Feldern entfernen
for (int i = 0; i < spielfeld.getFelder().length; i++) { 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]);
}
}
public static int getZugNummer() { public static int getZugNummer() {
return zugNummer; return zugNummer;
} }
@ -85,52 +79,28 @@ public class Zug {
public static void setCmls(CustomMouseListener[] cmls) { public static void setCmls(CustomMouseListener[] cmls) {
Zug.cmls = cmls; Zug.cmls = cmls;
} }
}
static class CustomMouseListener extends MouseAdapter {
class CustomMouseListener implements MouseListener { int i;
private Frame f; public CustomMouseListener(int i) {
private Feld feld; this.i = i;
private Spieler spieler;
public CustomMouseListener(Frame 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 // Auf Setzen des Feldes prüfen und ggf. Form zeichnen lassen
@Override @Override
public void mouseClicked(MouseEvent mouseEvent) { public void mouseClicked(MouseEvent mouseEvent) {
this.feld.setZeichen(spieler.getForm()); spielfeld.getFelder()[i].setZeichen(spieler.getForm());
f.repaint(); f.repaint();
Zug.setZugLaeuft(false); Zug.setZugLaeuft(false);
} }
}
// notwendige Implementierungen ohne weitere Funktion
@Override
public void mousePressed(MouseEvent mouseEvent) {
} }
@Override
public void mouseReleased(MouseEvent mouseEvent) {
}
@Override
public void mouseEntered(MouseEvent mouseEvent) {
}
@Override
public void mouseExited(MouseEvent mouseEvent) {
}
}