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.
Code
private static void move(final java.awt.Component comp, final int destX, final int destY)
{
// if this is the components first setting, set bounds directly
if(comp.getBounds().x == 0 && comp.getBounds().y == 0)
comp.setBounds(destX, destY, comp.getPreferredSize().width, comp.getPreferredSize().height);
// else move component to their destination
else
new Thread()
{
public void run()
{
for(int x = comp.getBounds().x; (comp.getBounds().x > destX && x > destX) || (comp.getBounds().x < destX && x < destX);)
for(int y = comp.getBounds().y; (comp.getBounds().y > destY && y > destY) || (comp.getBounds().y < destY && y < destY);)
{
comp.setBounds(x, y, comp.getPreferredSize().width, comp.getPreferredSize().height);
if(comp.getBounds().x > destX) x -= 5;
else x += 5;
if(comp.getBounds().y > destY) y =- 5;
else y += 5;
try { Thread.sleep(5); }
catch(InterruptedException err) {}
}
// set final destination bounds
comp.setBounds(destX, destY, comp.getPreferredSize().width, comp.getPreferredSize().height);
}
}.start();
}
Alles anzeigen
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