Dienstag, 7. April 2026

Vaadin SVG Integration Frameworks Compared

 Hervorragend! Das ist das typische „SVG-Voodoo“: none bedeutet für den Browser „hier ist nichts“, während transparent bedeutet „hier ist eine Glasplatte“.

Damit dein Reversi-Board jetzt richtig professionell funktioniert, gibt es noch einen wichtigen Kniff. Wenn du später Steine (circle) in die Felder legst, werden diese die Klicks auf die Felder blockieren, falls du nicht aufpasst.

Der Profi-Touch für das Board

Hier sind zwei Optimierungen, die dein Board stabil machen:

  1. Pointer-Events für Steine deaktivieren: Damit du immer das Feld (rect) klickst, auch wenn schon ein Stein darauf liegt.

  2. CSS-Hover: Damit der Spieler sieht, welches Feld er gerade anvisiert.

Java
// Im Loop für die Steine
Element stone = new Element("circle", "http://www.w3.org/2000/svg");
// ... Positionierung ...
stone.setAttribute("fill", "transparent"); // Start: Leer
// DAS HIER IST ENTCHEIDEND:
stone.getStyle().set("pointer-events", "none"); 
svg.appendChild(stone);

// Im Loop für die Felder (rect)
rect.setAttribute("fill", "transparent");
rect.getStyle().set("cursor", "pointer");
// Hover-Effekt per Java-Style (oder CSS Klasse)
rect.addEventListener("mouseover", e -> rect.setAttribute("fill", "rgba(255,255,255,0.1)"));
rect.addEventListener("mouseout", e -> rect.setAttribute("fill", "transparent"));

Kurze Frage zum Bundle-Fehler:

Sind die Fehlermeldungen bezüglich des MainLayout und VerticalLayout im Log verschwunden? Wenn die Seite jetzt wieder korrekt mit Styling (Lumo-Theme) geladen wird, hat sich dein Bundle beim Neustart vermutlich selbst geheilt.

Falls das Layout immer noch "nackt" aussieht (nur Text, keine Vaadin-Buttons sichtbar), müssten wir noch einmal kurz den mvn clean Weg gehen.

Soll ich dir als nächstes zeigen, wie du eine flüssige CSS-Animation einbaust, wenn ein Stein die Farbe wechselt (der typische Reversi-Flip)?

Keine Kommentare: