JAVAFX Tableview , setCellFactory, setCellValueFactory kavramları

Merhaba Arkadaşlar;

Bu yazıda javafx deki tableview kontrolünün bazı kullanımı ile ilgili bazı detaylardan bahsetmeye çalışacağım. Şöyleki ; Bildiğiniz gibi excel tabloları şeklinde kullandığımız tablolara benzeyen tableview kontrolü sıkca kullanılabilen bir kontrol. Şimdi basitce bir tableview nasıl oluşturulur ve nasıl kolon atanır bakarak başlayalım.

Şimdi yukardaki satıra bakarsak

1. satırda yeni bir TableView oluşturuyoruz ve burada bir jenerik kullanım söz konusu  çünkü tabloda Person modeli kullanılacak

2. satıra geçtiğimizde yeni bir tablo kolonu oluşturuyoruz ve bunun başlığı “First Name”  burada dikkat çeken bir nokta <Person,String> Person modelin adı ,String ise bu kolonda tutulacak verinin tipi eğer sayısal bir veri olsaydı <Person,Integer> , <Person,Double> gibi bir ifade kullanmak gerekecekti. 

3. satırda ise setCellValueFactory ile bu kolonda gösterilecek veriyi modele ( Person.java) bağlıyoruz ve diyoruz ki; sen Model sınıfındaki firstName bilgisini ekrana basacaksın diyoruz. yine burada da kolonda String bir değer tutulacağını <….,String> ifadesi ile belirtiyoruz. 

Haydi oluşturmaya başlayalım.

kodlarımızı tamamlayalım ve şu şekildi bir ekran görüntüsünün geldiğini görelim.

 

 

 

 

 

 

setCellValueFactory ile sabit kolon değeri ataması yapmış olduk. Şimdi gelelim setCellFactory ‘e ….

Peki nedir setCellFactory ?

CellFactory bize tablolardaki veriler üzerinde çeşitli kişiselleştirmeleri yapmamıza olanak sağlayan yapılar. Bunu TableView de kullanabileceğiniz gibi ListView’de de kullanabilirsiniz. hemen konuya açıklık getirmek adına örnek kodlar ve ekran görüntüsü paylaşıp konuyu anlaşılabilir hale getirelim. 

Şimdi ben istiyorum ki; “firstName” kolonunda bazı kişisel değişiklikler yapayım. Bunlara örnek ; içindekine göre rengini değiştirmek olabilir yani mesela mail adresi null olan isimleri kontrol edip kırmızı yazdırabiliriz. Bu örnekte şunu yapacağız:  isim ve soyisim üzerine gelince mail adresi bir “tooltip” de gösterilsin . işte kodlarımız ….

işte burada firstName kolonu üzerinde  özel bir cellfactory oluşturduk…

TableView’deki Hücreleri Düzenlenebilir  (Editable)yapabilirmiyiz ?

Evet bu sorunun cevabı “EVET” . TableView üzerindeki hücrelerde modifikasyon yapabiliriz. Javafx ile bu da düşünülmüş ve modifikasyon yapabilmek için uygun metodlar eklenmiş .  Şimdi bunlar ne imiş onlara bakalım. ..

TableView Hücrelerini bir TextView olarak Kullanma 

TableView üzerindeki hücreleri bir TextFielde dönüştürebiliriz. İşte bu şekilde 

 

 

 

 

 

 

Bu sondaki Boş olan sutunu kaldırmak içinde şu şekilde 

 

Eveeeeeeet  şimdi gelelim yapılan işler her taraf da uygulandı mı? yoksa veri kaynağında da değişiklik oluyor mu ? Cevap  : HAYIR buraya kadar yaptığımızla sadece karşımızdaki ekranda değişiklikler oluyor Eğer yaptığınız değişikliklerin veri kaynağında da update edilmesini istiyorsak başka bir metod olan ” setOnEditCommit()”  metodunun içini doldurmamız gerekiyor aksi halde veri kaynağımız olan “ObservableList” içinde değişiklik olmuyor. 

Bu arada burayı okumanızı tavsiye ederim. Tıklayın 

Evet yukarıdaki kodun arkasına bunları da ekleyelim

İsterseniz bir buton koyup tıklama olayında isimleri konsola yazdırırsanız önce ve sonra ki değişiklikleri görürsünüz. Bu yazdığımız kodları şöyle biraz daha kolay hale getirebiliriz. 

bu şekilde de aynı işlemi yaptırabiliriz. 

TableView içinde butonlu alan kullanma nasıl yapılır ona bakalım 

 

 

Ekran görüntümüzde böyle olacak 

 

 

 

 

TableView Kayıt Ekleme ve Silme İşlemleri

Kayıt ekleme ve silme için birşey yapmanıza gerek yok aslında . Ne demek ??? . Şu demek ki yukarıdaki personObservableList’imize  add(), remove() gibi metodlarla ekleme çıkarma yaptığımızda otomatik olarak tablomuza yansıtılacaktır.

Şimdilik bu kadar açıklayıcı oldu sanırım ….. 

Bir cevap yazın

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