Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 4.037 pregleda

Najnovija ↓

Treperenje prilikom Drag&Drop-a 29.12.2004. u 09:20 · pre 266 meseci #1
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);
}
Re: Treperenje prilikom Drag&Drop-a 15.01.2005. u 01:11 · pre 265 meseci #2
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.
Re: Treperenje prilikom Drag&Drop-a 21.01.2005. u 01:35 · pre 265 meseci #3
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 :p
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.
Re: Treperenje prilikom Drag&Drop-a 21.01.2005. u 20:10 · pre 265 meseci #4
Imas na Sun-ovom sajtu i u dokumentaciji posebnu temu o dnd-u.Pogledaj na Sun-ovom forumu ima odlicnih primera
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme