Animation in Swing

  • hallo!

    ich habe folgendes problem und hoffe, dass mir jemand weiterhelfen kann:

    ich habe erfolgreich einen layout manager geschrieben, welcher die zielpositionen aller komponenten im container bestimmt und anschließend die methode move(component,x,y) aufruft, welche die komponenten als effekt flüssig an die jeweilige zielposition schieben sollte.

    ich habe die kleine anwendung mit lediglich drei komponenten im container getestet und das resultat war völlig unzufriedenstellend. die components bewegen sich nicht flüssig und teilweise auch nicht an die richtige endposition. hat vielleicht jemand eine idee, wie ich geschickter vorgehen kann, um zum gewünschten ergebnis zu gelangen?

    danke im voraus.
    mfg

  • Ein paar Vorschläge und Fragen:

    - Du brauchst keine 2 for Schleifen, es reicht eine! Mit einer gemeinsamen Abfrage ob x und y auf Endposition sind.

    Bezüglich:

    PHP
    if(comp.getBounds().x > destX) x -= 5;
    else x += 5;

    Bedeutet, dass du x erhöhst, wenn <= destX.
    Also auch, wenn x == destX - Vermutlich nicht unbedingt das was du willst.

    - Warum benutzt du x und comp.getBounds().x simultan? Haben die unterschiedliche Werte?

    Übrigens benutzt du nicht Swing sondern AWT. Denn in Swing wäre diese Thread-Sauerei nicht möglich.
    Siehe auch:
    http://openbook.galileodesign.de/javainsel5/javainsel15_032.htm

    Stefan Spelitz
    [Computergraphik UE Tutor 2017SS]

  • danke, so funktioniert es einigermaßen.


    allerdings werde ich noch einbauen, dass der thread bei vorzeitiger umpositionierung gestoppt wird, so dass die components nicht "herumzittern".

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!