Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Treperenje prilikom Drag&Drop-a

[es] :: Java :: Treperenje prilikom Drag&Drop-a

[ Pregleda: 2816 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

PaGud
Beograd

Član broj: 25402
Poruke: 24
*.velefarm.co.yu.



Profil

icon Treperenje prilikom Drag&Drop-a29.12.2004. u 08:20 - pre 200 meseci
Kada vucem recimo dugme po formi dolazi do treperenja i dugme se cesto pojavljuje na totalno drugoj poziciji daleko od kursora.

Napravio sam event handler(Button klase) za drag&drop i iz njegovog parametra(zaboravih ime event klase) uzimam poziciju kursora i na tu poziciju postavljam dugme.

Kod ide otprilike ovako:

DragEvent(Event evt)
{
Point p=evt.getMousePosition();
Dugme.setPosition(p);
}
 
Odgovor na temu

samilen
Saša Milenković
Beograd

Član broj: 11606
Poruke: 106
*.rcub.bg.ac.yu.



Profil

icon Re: Treperenje prilikom Drag&Drop-a15.01.2005. u 00:11 - pre 199 meseci
I ja imam isti problem. Samo sa JToggleButton-om.
O cemu se radi?
Koristim MouseMotionAdapter i uzimam poziciju eventa i dodeljujem je dugmetu.
Kada prevlacim dugme ono u jednoj tacki skokne na odprilike-gornji-levi-kraj prozora, a u sledecoj tacki se naguzi kod strelice i tako naizmenicno. jos sam primetio i da se dugme sporije krece od misa (ako zanemarimo problem treperenja).
Primetio sam paket java.awt.dnd, ali ne znam kako da dodam ove listenere u JToggleButton.
 
Odgovor na temu

samilen
Saša Milenković
Beograd

Član broj: 11606
Poruke: 106
*.rcub.bg.ac.yu.



Profil

icon Re: Treperenje prilikom Drag&Drop-a21.01.2005. u 00:35 - pre 199 meseci
Očigledno je da se ljudima ova tema učinila, ili trivijalnom, nisu znali da protumače pitanje, ili nisu znali odgovor; te nisu našli za shodno da učestvuju u temi.
Stoga sam sam malo eksperimentisao i - najzad - našao rešenje sam
Pošto mislim da ljudi često mogu naići na ovakve muke kada, poput mene, tek počinju koketiranje sa Javom; odlučio sam da objasnim ono što sam shvatio rešavajući ovaj problem.
Ako koristite MouseMotionListener/MouseMotionAdapter, sigurno ćete pokušati da implementirate ...void mouseDragged(MouseEvent e)... U ovom slučaju, neće biti dovoljno samo proslediti koordinate MouseEvent-a (e), jer, čini mi se, on prosleđuje čas-apsolutne, čas-relativne koordinate (abs: desktop, rel: prozor), te dobijamo efekat skakutanja komponente po ekranu. Potrebno je prvo, na početku akcije prevlačenja, prevesti koordinate eventa na koordinate komponente koju prenosimo, za šta se koristi metoda translatePoint(int x, int y) pomenutog eventa.
Sledeći primer implementacije MouseMotionAdapter klase ovo i ilustruje:

Code:
private class Prevlacenje extends MouseMotionAdapter {
   public void mouseDragged(MouseEvent e){
     int x,y;
     Component c=e.getComponent();         
     x=c.getX();
     y=c.getY();
     e.translatePoint(x,y);  //  Sprečava efekat skakutanja
     c.setLocation(e.getPoint());  // Pomera komponentu zajedno sa 
                                   // pointerom sve dok traje event
     c.repaint();  // Može biti korisno, ali nije neophodno
   }
 }


Ovako se pomera komponenta, ali može da nervira to što je pointer(strelica) uvek u gornjem levom uglu komponente. To se vrlo lako može promeniti oduzimajući(?! a ne sabirajući ?!) neku vrednost od x, ili y - recimo
Code:
x=c.getX()-(c.getBounds().width/2);
i slično.

Postoji i awt.dnd paket u kome je javin drag'n'drop sistem ali je suviše komplikovan i nisam uspeo da ga prokljuvim. Da li neko ima iskustva sa time? Cenio bih ako bi ovde ukratako opisao suštinu rada sa ovim, verovatno dosta korisnim, paketom.
 
Odgovor na temu

PaGud
Beograd

Član broj: 25402
Poruke: 24
*.ptt.yu.



Profil

icon Re: Treperenje prilikom Drag&Drop-a21.01.2005. u 19:10 - pre 199 meseci
Imas na Sun-ovom sajtu i u dokumentaciji posebnu temu o dnd-u.Pogledaj na Sun-ovom forumu ima odlicnih primera
 
Odgovor na temu

[es] :: Java :: Treperenje prilikom Drag&Drop-a

[ Pregleda: 2816 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.