Brauche Idee für "Linienverbinder"



  • Also ich habe Zeichnungsobjekte die sich auf einem Grpahics-Object darstellen. Beispielsweise ist eines ein Rechteck..

    Was ich jetzt brauch ist eine Idee, wie ich dynamische Verbindungen zwischen 2 Objekten schaffe. Diese sollen nur aus horizontalen und vertikalen Linien bestehen.

    Verschiebe ich ein Objekt, müssen sich die daran angeschlossenen Linien anpassen.
    Weiterhin muss ich die Position der Zwischenlinien (zumeist eine horizontale) verschieben können.
    Also müssen die Linien anwählbar sein, eine Art Drag und Drop muss existieren und sie müssen an jedem Ende eine Verbindung zu einem Objekt haben.
    Weiterhin sollen die Ecken selbst als Verbindungspunkte zu anderen Linien dienen. Es ist im Übrigen nicht festgelegt, aus wievielen horizontalen oder vertikalen Segmenten ein solcher Verbinder zusammengesetzt ist..

    Hat da jemand zufällig einen Gedanken, wie das Ganze am Besten zu lösen ist?

    Hatte überlegt, aus einem Verbinder einen Container zu machen in dem dann die einzellinien sitzen, aber so ganz bin ich da noch nicht mit durch..

    P.S.: Ist eigentlich irrelevant, aber das Ganze soll auf Java und Swing basieren..



  • ... und wenn Du die Koordinaten der Maus mit dem Ursprungspunkt vergleichst hast Du doch dein del(x) und del(y) aus dem Du deine Linien bilden kannst.
    Update-Funktion per Mausbewegung.

    Willst Du Stufen bauen, einfach per Mausklick eine Ecke als Ursprung festlegen.

    Dasselbe Verfahren hast Du für eine weitere Kante, indem Du die Ecke als Ursprungspunkt betrachtest.

    Geht mir auch so ... Manchmal sind Lösungsansätze so trivial! So tief vom Niveau her kann man gar nicht denken ... 😃



  • sollen die linien nicht durch andere objekte durch gehen, sich nicht überdecken?



  • Hab den Gedanken mal weitergesponnen und ausgetragen..

    Jetzt habe ich eine Grundklasse Drawable die Position, Größe, und einen Vector beinhaltet. Dieser Vector beinhaltet Pads, welche ebenfalls von Drawable abstammen. Diese Pads haben jeweils einen Owner und den relativen Abstand zu diesem.
    Diese Pads erben schon vom Drawable Methoden zum Verschieben, anwählen, etc.

    Der Linienverbinder macht nichts weiter als bei seiner Erstellung jeweils ein Pad der beiden zu verbindenden Objekte zu nutzen und dazwischen zwei eigene zu setzen, die einfach unterhalb der originalen positioniert werden. Beim Darstellen mach ich nichts weiter, als eine polyline durch die Pads zu zeichnen.

    Dank seines Erbes sorgt jedes einzelne Pad dafür, dass ich die linie beliebig bearbeiten kann.

    OOP is geil! 😃


Anmelden zum Antworten