JavaFx Drag Drop Uygulaması

Merhaba arkadaşlar bu yazıda kaynağı burada   olan (Oracle Java Documentation ) bir uygulamanın nasıl bir mantıkta çalıştığından bahsedeceğim. Aslında çok kullandığımız bir durum. Bir nesneyi bir yerden alıp başka bir yere bırakmak işleminin ta kendisi. Şimdi bu nasıl bir süreçte oluyor bu işin yaşam döngüsü nasıl ona bakalım.  Aslında somut dünyadaki mantık gibi bir yerdeki bir nesneyi alıyorsunuz bir kabın içine koyuyorsunuz ve bırakacağınız yere götürdüğünüzde oraya bırakılması gereken bir nesne ise kontrol edip bırakıyorsunuz.  Şimdi olaylara tek tek bakalım ve bir adım listesi çıkaralım 

  1.  Taşıma hareketini algılama ve o nesneye ait taşıma işlemini başlatma ( setOnDragDetected metodunu yazma)
  2. Taşıma işlemine izin verme ( Transfer Modu)
  3. Taşınacak nesneyi bir kutuya koyma (Dragboard)
  4. Taşınan nesne Taşınacak yerin üzerine gelmesi durumu ( setOnDragOver metodunu yazma)
  5. Burada gelen nesne acaba bizim kabul edebileceğimiz bir nesnemi kontrolünü yapıp taşıma işlemine izin verme (acceptTransferMode
  6. Taşınan nesne hedefin üzerine gelince hedef nasıl bir tepki verecek bunu belirleme mesela zemin renginin değişmesi gibi ( setOnDragEntered metodunu yazma)
  7. Taşıma işleminden vazgeçilirse ne olacak nasıl bir tepki verilecek bunu belirleme mesala geri eski haline dönmesi gibi( setOnDragExited metodunu yazma)
  8. Taşınacak nesne hedefin üzerine bırakılınca yapılacaklar ( setOnDragDrop metodunu yazma) 
  9. Nesne hedefin üzerine bırakıldığında gerekli kontroller yapılmalı istenen nesne
     mi bırakıldı acaba diye mesela bir dosya yükleme işlemi olabilir acaba istenen formatta bir dosya mı bırakıldı yoksa bir kısayol filan mı bırakıldı bu metodun içinde bunları kontrol etmek gerekiyor. 
  10. İşlem başarılı olarak tamamlandı ise haber vermek gerekiyor peki nereye ? setOnDragDone  o yüzden setOnDragDrop metodunun içinde setDropCompleted metoduna true atayalım
  11. İşlem tamamlandığına göre iş bitiminde yapılacak işleri yapalım. Mesela … sürükleyip bıraktığımız yazıyı diğer taraftan silelim gibi …..

Evet bu aşamaları takip ederek bir uygulama yapacağız yani Oracle deki HelloDragAndDrop uygulamasını yapacağız

Adım 1: 

Ana sahnemizi oluşturup 2 tane text ekleyelim.

Adım 2: 

şimdi burada kaynak nesnemizi taşımak istediğimize göre kaynak nesnesi taşınmak istendiğindeki event ‘ı yakalayıp taşınmasına izin verelim

Adım 3: 

Evet izin verdik ve taşıma kutusunun( DragBoard) ın içine aldık fare ile elimizde gezdiriyoruz . Şimdi ne olacak ?? Tabi ki taşıyacağımız yerin üzerine götüreceğiz değil mi ? Mantık böyle işler ..

Üzerine geldiğimizde kutunun (DragBoard) ın içini kontrol ediyoruz ve transfere kabul cevabı veriyoruz. Yani kullanıcı eğer isterse buraya bırakabilir kabul edilebilir . burada isteğe göre çok farklı şartlar sunulabilir.

Adım 4: 

Şimdiiiiiiii… Evet üzerine getirince hedef üzerine geldiğimizle ilgili herhangi bir tepki vermedi bunu yapalım 

Adım 5: 

Üzerine gelince yazının rengini değiştirdik ki belli olsun üzerine geldiğimiz. Peki çıkınca ne olacak ? Eski haline geri döndürelim onu da böyle yapalım

Adım 6: 

Evet hala elimiz farenin tuşunda ve elimizi bırakmadık. Şimdi artık hedefin üzerine bırakıyoruz.. onun için de setOnDragDrop metodumuzu yazıyoruz.

Adım 7: 

 

Peki ? Buraya kadar iş tamam kaynak nesnemizi almıştık ve götürüp bir yere bırakmıştık onun da artık orda olmasını istemiyoruz. Nasıl olacak ? İşlem tamamlandığında  setDropComleted metoduna işlem başarılı diye haber vermiştik. şimdi setOnDragDone metodunda işlemin bitişi ile ilgili işlemleri yapıp işlemi tamamlayalım.

Evet inşallah güzelce adım adım anlaşılır bir şekilde anlatmışımdır. Kolay Gelsin….

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir