İnfografik
← Ünite 2
Görsel Programlama 2

Ünite 2: Gelişmiş Arayüz Bileşenleri

Doğrudan Manipülasyon İlkesi
Hutchins, Hollan ve Norman (1985) tarafından geliştirilen bu yaklaşım, kullanıcının arayüz nesneleri üzerinde doğrudan işlem yapmasını ve sistemin anlık geri bildirim vermesini savunur. Bu, modern arayüzlerde kullanıcıya kontrol hissi veren temel tasarım ilkesidir.
ObservableList'in Avantajı
Oracle (2018) dokümantasyonuna göre, ObservableList kullanımı geliştiriciyi arayüzü manuel olarak yenileme (refresh) yükünden kurtarır. Liste değiştiğinde arayüz bileşeni (ListView, TableView) değişimi algılar ve kendini günceller.
ToggleGroup'un İşlevi
RadioButton'ları bir ToggleGroup içine almak, 'birini seç, diğerlerini bırak' kuralını otomatikleştirir. Bu, geliştiricinin if-else bloklarıyla doğrulama yapma ihtiyacını ortadan kaldırarak kodun sadeleşmesini sağlar.
Spinner ve Bakım Kolaylığı
SpinnerValueFactory kullanımı, değer üretim kuralını arayüzden ayırır. Bu ayrım, aralık veya adım miktarı gibi kurallar değiştiğinde sadece fabrika modelinin güncellenmesini sağlayarak bakım kolaylığı sunar.

Anahtar Kavramlar

ObservableListİçeriğinde değişiklik olduğunda dinleyicilerine otomatik bildirim gönderen, JavaFX arayüz bileşenlerinin veri kaynağı olarak kullanılan özel bir liste yapısıdır. Örneğin, bir ListView'e bağlı ObservableList'ten bir öğe silindiğinde, arayüz otomatik olarak güncellenir.
SelectionModelListView gibi bileşenlerde kullanıcının seçim davranışlarını yöneten ve izleyen soyut yapıdır. getSelectionModel() ile erişilir ve seçili öğe, indeks veya çoklu seçim modunun yönetilmesini sağlar.
ToggleGroupBirden fazla RadioButton'ı bir araya getirerek, gruptan sadece birinin seçili kalmasını sağlayan mantıksal bir yapıdır. Kullanıcı yeni bir RadioButton seçtiğinde, diğerleri otomatik olarak seçimi bırakır.
Direct ManipulationKullanıcının arayüzdeki nesneler üzerinde doğrudan işlem yapması ve sistemin bu eylemlere anında geri bildirim vermesidir. Örneğin, bir öğeye sağ tıklayıp 'Sil' demek doğrudan manipülasyondur.
Indeterminate StateCheckBox bileşeninin sahip olduğu, seçili veya seçili değil durumlarının dışında 'belirsiz' veya 'karışık' durumu ifade eden üçüncü bir durumdur.
SpinnerValueFactorySpinner bileşeninin sayısal değer üretim kurallarını (aralık, adım miktarı vb.) belirleyen ve arayüz ile mantığı birbirinden ayıran modeldir.
ContextMenuKullanıcının bir bileşen üzerinde sağ tıkladığında açılan, bağlama duyarlı eylemler (MenuItem) içeren bir popup menüsüdür. Arayüzü sade tutmak için kullanılır.
Listener (Dinleyici)Bir özellikte veya veri yapısında meydana gelen değişiklikleri yakalayan ve buna bağlı bir kod bloğunu çalıştıran mekanizmadır. Örneğin, selectedItemProperty() bir listener ile izlenerek seçim değişikliği yakalanır.
CellFactoryListView gibi listelerin hücrelerinin nasıl görüntüleneceğini (metin, ikon, buton vb.) özelleştirmeye yarayan yapıdır. Listelerin görsel zenginliğini artırır.
Event-Driven ProgrammingProgramın akışının kullanıcı eylemleri veya sistem olayları tarafından belirlendiği bir programlama yaklaşımıdır. JavaFX uygulamaları bu mantıkla çalışır.

Diğer Önemli Bilgiler

ContextMenu ve Arayüz Sadeliği

ContextMenu, işlevleri gizleyerek arayüzü kalabalıklaştırmadan sunar. Kullanıcı ihtiyaç duyduğunda sağ tık ile menüye erişir, bu da arayüzün öğrenilebilirliğini ve temizliğini artırır.

Çoklu Seçim Modu

ListView varsayılan olarak tekli seçim (SINGLE) modundadır. Çoklu seçim (MULTIPLE) moduna geçmek için SelectionMode.MULTIPLE kullanılır ve kullanıcı CTRL tuşu ile birden fazla öğeyi seçebilir.

Olay Güdümlü Programlama Eğitimi

Lukkarinen vd. (2021) tarafından yapılan araştırmalar, olay güdümlü yapının eğitim ortamlarında sistemi yönetmeyi kolaylaştırdığını ve veri-arayüz uyumunu güçlendirdiğini belirtmektedir.

Sınavda Dikkat Et

  • ObservableList'in sadece bir veri tutucu değil, arayüzü güncelleyen bir 'olay kaynağı' olduğunu unutmayın.
  • ToggleGroup'un RadioButton'lar için otomatik bir 'tek seçim' kuralı uyguladığını, kodla if-else yazmanıza gerek kalmadığını hatırlayın.
  • Spinner ile Slider arasındaki farkı 'hassasiyet' üzerinden kodlayın: Spinner hassas, Slider sezgiseldir.
  • ContextMenu'nün bir 'bağlam' (context) gerektirdiğini, yani genellikle bir öğe seçiliyken anlam kazandığını unutmayın.
  • Çoklu seçim modunun varsayılan olarak kapalı (SINGLE) olduğunu, MULTIPLE moduna geçişin manuel yapılması gerektiğini bilin.
  • Seçim modelinin (selection model) veri katmanından (items) ayrı bir yapı olduğunu, bu ayrımın hata payını düşürdüğünü aklınızda tutun.