Temel JavaFX Bileşenleri (2) TextField, ScrollPane, TreeView ve TableView,

Benzer belgeler
Temel JavaFX Bileşenleri (1) Labeled, Label, Button, ToggleButton, RadioButton, ToggleGroup, CheckBox, ComboBox, Slider, ListView ve SelectionModel

JavaFX Temelleri (2)

JavaFX Temelleri (1)

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

MOBİL UYGULAMA GELİŞTİRME

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Final Sınavı Örnek Soruları Bahar 2018

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Görsel Programlama (Visual Programming)

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Burak Kıymaz JAVA FX

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Görsel Programlama DERS 08. Görsel Programlama - Ders08/ 1

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

ASP.NET ile Bir Web Sitesi Oluşturma

2. Belgeye Metin Ekleme

Java da. ve AWT ve SWING Kütüphaneleri. BBS-515 Nesneye Yönelik Programlama. Ders #8 (9 Aralık 2009)

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veri Yapıları ve Algoritmalar dönem

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 18: Formatlı Grafik Kullanıcı Arayüzü Oluşturma

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

BİL-141 Bilgisayar Programlama I (Java)

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Android Ders Notları

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

1 JAVASCRIPT NEDİR? 1

KOCAELİ TEKNİK LİSESİ ELEKTRİK ELEKTRONİK BÖLÜMÜ OTOMASYON ATÖLYESİ EKTS (Elektrik Kumanda Teknikleri Simülatörü ) DERS NOTU. Kaynak :

Örnek Uygulama: CheckedListBox da seçili olanları listbox nesnesine ekleyen program.

Ağaç (Tree) Veri Modeli

BİL-142 Bilgisayar Programlama II

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET

HSancak Nesne Tabanlı Programlama I Ders Notları

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

3. CheckedListBox 4. ListView

Ağaçlar (Trees) Ağaçlar (Trees)

Client Server Database

Fatura Dinamik Kodlama İyileştirmeleri

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

MOBİL UYGULAMA GELİŞTİRME

TRAKYA BİRLİK WEBSİTE YÖNETİM PANELİ. Kullanıcı Dokümantasyonu

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 4

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

C# Form Uygulamaları. Nesne Tabanlı Programlama I (C#) Ders Notu. S.Ü.Akören A.R.E. Meslek Yüksekokulu C.ÖZCAN- F.SARAY

Metin İşlemleri, Semboller

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Web sayfalarında yapılan her çalışma ve düzenleme tablolar aracılığı ile yapılır. Dolayısıyla çoğu web sayfalarında tablo kullanmak zorunluluktur.

Diziler İndisli Değişkenler

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

MICROSOFT WORD Şekil 1 TABLO HAZIRLAMA : Word 2002/II TAB AYARLARI :

MICROSOFT WORD Word 2000/II TAB AYARLARI :

MVC, MVP ve Mediator ile TDD Tecrübeleri. Kenan SEVİNDİK

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Yrd. Doç. Dr. Caner ÖZCAN

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

ÜNİTE 1. Bu üniteyi çalıştıktan sonra; Microsoft Excel Nedir?

Web Tasarımının Temelleri

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Kullanıcı Dökümanı. Flash B2B. Versiyon 0.1

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

MOBİL UYGULAMA GELİŞTİRME

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Görsel Programlama (Visual Programming) 2.Hafta

Programlama Dilleri 3

Üst Düzey Programlama

MICROSOFT EXCEL 2000

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Yenilikler LogiKal VERSİYON 7

BĐLGĐSAYARDAN BAĞIMSIZ YAZDIRMA ĐŞLEMĐ

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Üst Düzey Programlama

YZM 2116 Veri Yapıları

Spring Framework Eğitimi

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Class LinkedList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.abstractsequentiallist java.util.

YZM 2105 Nesneye Yönelik Programlama

AĞAÇLAR. Doç. Dr. Aybars UĞUR

Java da İstemci Tarafı Uygulamalar

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

Proje 1. Arayüz Tasarımı

Yrd. Doç. Dr. Caner ÖZCAN

Intercepting Filter Tasarım Şablonu KurumsalJava.com

MOBİL UYGULAMA GELİŞTİRME

Ders 7: Form Kontrol Elemanları. barisgokce.com

Transkript:

Temel JavaFX Bileşenleri (2) TextField, ScrollPane, TreeView ve TableView,

Metin Alanı (TextField) (1/2) javafx.scene.control.textfield sınıfı Kullanıcıdan tek satırlık metin almakta kullanılır TextField(): Metin alanı boş bir şekilde oluşturulur TextField(String text): metin alanına text metnini yazarak oluşturur O anki metin içeriğini almak için: String gettext() Metni programdan değiştirmek için: settext(string value) Kullanıcı metin alanındayken <Enter> tuşuna basarsa bir ActionEvent oluşur

Metin Alanı (TextField) (2/2) Metin alanı boşken kullanıcıya ipucu vermek için: setprompttext(string value) Mesaj açık (düşük yoğunluklu) bir renk kullanılarak gösterilir Diğer metotlar: selectrange(int anchor, int caretposition) selectall() copy(), cut(), paste() inserttext(int index, String text) deletetext(int start, int end) TextField alt sınıfı: javafx.scene.control.passwordfield Girilen karakterleri maskeler

Metin Alanı Örneği final TextField textfield = new TextField(); final Label label = new Label(); textfield.setonaction(new EventHandler<ActionEvent>() { public void handle(actionevent event) { label.settext(textfield.gettext()); textfield.settext("<text moved to label>"); textfield.selectall(); } }); TextFieldExample Projesi

Kaydırma Panosu (ScrollPane) (1/3) javafx.scene.control.scrollpane sınıfı Control sınıfının alt sınıfı Görsel bileşenin boyutu, bileşen için ayrılan boyutu aştığında kullanılır Örnekler:büyük resim, uzun metin Kaydırmak için, kaydırma çubukları (scrollbars) kullanılır Dikey ve yatay kaydırma çubukları ScrollPane(): boş panel ScrollPane(Node content): content pano içerisine yerleştirilir setcontent(node content) Kaydırılacak içerik program akışı sırasında dinamik olarak değiştirilebilir

Kaydırma Panosu (ScrollPane) (2/3) Görüş alanı (viewport): kaydırılan içeriğin gösterildiği alan setprefviewportheight(double height) setprefviewportwidth(double width) Fare tıklanıp sürüklenerek içeriğin görünen kısmı kaydırılabilir Bu özellik normalde aktive edilmemiştir setpannable(boolean enable) Kaydırılan içeriğin pozisyonu program ile değiştirilebilir: setvvalue(double value) sethvalue(double value) 0 ve 1 arasında değerler

Kaydırma Panosu (ScrollPane) (3/3) ScrollPane.ScrollBarPolicy numaralandırması (enum) NEVER Kaydırma çubuğu hiçbir zaman gözükmez ALWAYS Kaydırma çubuğu her zaman gözükür AS_NEEDED Gösterilen içeriğin boyutuna göre, kaydırma çubuğu gösterilir veya gösterilmez Bir kaydırma panosuna ait, kaydırma çubuğu politikasını değiştirmek için: setvbarpolicy(scrollbarpolicy value) sethbarpolicy(scrollbarpolicy value) Varsayılan politika hem yatay hem de dikey çubuklar için: AS_NEEDED

Kaydırma Panosu Örneği ImageView imageview = new ImageView( "http://www.clker.com/cliparts/9/0/f/0/12573692281783328442hmmotuhi.png"); ScrollPane scrollpane = new ScrollPane(imageView); scrollpane.setprefviewportheight(200); scrollpane.setprefviewportwidth(300); scrollpane.setvvalue(0.4); scrollpane.sethvalue(0.7); scrollpane.setpannable(true); ScrollPaneExample Projesi

TreeView (1/3) Veri elemanlarının ağaç yapısına benzer şekilde hiyerarşik bir biçimde gösterilmesini sağlar Örnek: dosya sistemi içeriği javafx.scene.control.treeview<t> sınıfı T: ağaç elemanlarının tipi Tepe nodu (root node), dal nodlar (branch nodes) ve yaprak nodlar (leaf or terminal nodes) Alt ağaç (subtree): bir dal nod ve onun alt nodlarından oluşan ağaç

TreeView (2/3) Nod yolu (node path): tepe nodundan belirli bir noda giden nod sırası Dallar kullanıcı tarafından açılabilir (expand) veya kapanabilir (collapsed) Gerektiğinde kaydırma çubukları (scrollbars) otomatik olara keklenir veya çıkarılır TreeView(TreeItem<T> root): kök nodu root olan ağaç Ağaç nodları: javafx.scene.control.treeitem<t> nesneleri

TreeView (3/3) Bir ağaç oluşturmak için: Çocuğu olmayan nodları oluşturun TreeItem(T value) Kök nodun çocuklarını kök noda ekleyin. Diğer nodları da kendi anne nodlarına ekleyin: Bir nodun alt nodlarının (çocuklarının) listesini almak: ObservableList<TreeItem<T>> getchildren() Bu listeye yeni nodlar eklemek: add veya addall metotları TreeItem<T> sınıfının diğer metotları: T getvalue() TreeItem<T> getparent()

TreeView Örneği TreeItem<String> house = new TreeItem("House"); TreeItem<String> livingroom = new TreeItem("Living Room"); TreeItem<String> bedroom = new TreeItem("Bedroom"); house.getchildren().addall(livingroom, bedroom); livingroom.getchildren().addall( new TreeItem("Table"), new TreeItem("Sofa")); TreeView<String> treeview = new TreeView(house); TreeViewExamples Projesi

TreeView Seçim Modeli MultipleSelectionModel<TreeItem<T>> getselectionmodel() Çoklu seçim normalde aktive edilmemiştir Ağaç elemanı seçim olaylarından haberdar olmak için: Açaç seçim modelini elde edin Eğer tekli seçim modeli ise: Seçim modeli üzerinden selecteditem özelliğini elde et selecteditem özelliği üzerine bir değişim dinleyicisi kaydet Eğer çoklu seçim modeli ise: Seçim modeli üzerinden selecteditems gözlemlenebilir listesini elde et selecteditems gözlemlenebilir listesi üzerine bir InvalidationListener nesnesi kaydet

TreeView Seçim Dinleyicisi Örneği final Label label = new Label(); MultipleSelectionModel<TreeItem<String>> model = treeview.getselectionmodel(); model.selecteditemproperty().addlistener( new ChangeListener<TreeItem<String>>() { public void changed(observablevalue<? extends TreeItem<String>> o, TreeItem<String> oldval, TreeItem<String> newval) { label.settext("selected item: " + ((newval!= null)? newval.getvalue() : "<none>")); } }); TreeViewExamples Projesi

TreeView Seçim Dinleyicisi Alıştırması Bir önceki örnekteki TreeView için çoklu seçim özelliğini aktifleştirin TreeView üzerindeki seçim değişikliklerini dinleyen bir dinleyici gerçekleştirin O anda seçilen elemanların değerlerini bir etiket üzerinde gösterin Ağaç üzerinde seçim her değiştiğinde bu etiketi güncelleyin

TreeView Seçim Dinleyicisi Alıştırması Çözümü model.setselectionmode(selectionmode.multiple); model.getselecteditems().addlistener( new InvalidationListener() { public void invalidated( Observable observable) { ObservableList<TreeItem<String>> list = (ObservableList<TreeItem<String>>) observable; String text = "Selected items: "; for (TreeItem<String> item : list) text += item.getvalue() + ' '; label.settext(text); } }); TreeViewExamples Projesi

javafx.scene.control.tableview<s> Verileri bir tabloya ait satır ve sütunlar halinde organize bir biçimde gösterir TableView(ObservableList<S> items) S: tabloda gösterilen elemanların tipi bir satırda bir eleman Elemanların listesi değiştiğinde tablo otomatik olarak güncellenir Satırlar, kullanıcının sütun başlıklarına tıklaması halinde sıralanabilir Tablo sütunlarını tanımlamak için: Sütun listesi alınır ObservableList<TableColumn<S,?>> getcolumns() Listeye yeni sütunlar eklenir

TableView Sütunları (1/3) javafx.scene.control.tablecolumn<s, T> sınıfı S: tablodaki elemanların tipi T: belirli bir sütundaki hücrelerde gösterilen verinin tipi TableColumn(String text): text sütun başlığında söterilen metin

TableView Sütunları (2/3) Belirli bir hücredeki verinin nasıl elde edileceğinin belirlenmesi: setcellvaluefactory(callback<celldatafeatures<s, T>, ObservableValue<T>> value) javafx.util.callback<p, R>: geriçağırımlar (callback) için jenerik arayüz P: geriçağırım metoduna gönderilen parametrenin tipi R: geriçağırım metodu için dönüş tipi R call(p param)

TableView Sütunları (3/3) CellDataFeatures<S, T>: TableColumn<S, T> sınıfı içinde tanımlanan alt sınıf Belli bir tablo hücresi için tüm gerekli bilgileri sağlar TableView<S> gettableview() TableColumn<S, T> gettablecolumn() S getvalue() Bir TableView sütunu için hücre değeri fabrikası (cell value factory): CellDataFeatures<S, T> nesnesini girdi olarak alır ObservableValue<T> nesnesini çıktı olarak verir Gözlenebilir değer değiştiğinde, hücre içerikleri otomatik olarak güncellenir

TableView Örneği (1/4) public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } public String getname() { return name; } public int getage() { return age; } public void setname(string value) { name = value; } public void setage(int value) { age = value; } TableViewExamples Projesi

TableView Örneği (2/4) Person john = new Person("John", 20); Person peter = new Person("Peter", 22); ObservableList<Person> people = FXCollections.observableArrayList(john, peter); TableView<Person> tableview = new TableView<>(people); TableViewExamples Projesi

TableView Örneği (3/4) TableColumn<Person, String> namecol = new TableColumn<>("Name"); namecol.setcellvaluefactory( new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { }); public ObservableValue<String> call( CellDataFeatures<Person, String> param) { return new ReadOnlyObjectWrapper( param.getvalue().getname()); } TableViewExamples Projesi

TableView Örneği (4/4) TableColumn<Person, Integer> agecol = new TableColumn<>("Age"); agecol.setcellvaluefactory( new Callback<CellDataFeatures<Person, Integer>, ObservableValue<Integer>>() { public ObservableValue<Integer> call( CellDataFeatures<Person, Integer> param) { return new ReadOnlyObjectWrapper( param.getvalue().getage()); } }); tableview.getcolumns().addall(namecol, agecol); TableViewExamples Projesi

JavaFX Özellikleri ile TableView (1/4) public class ObservablePerson { private final StringProperty name = new SimpleStringProperty(); private final IntegerProperty age = new SimpleIntegerProperty(); public ObservablePerson(String name, int age) { this.name.set(name); this.age.set(age); } } public String getname() { return name.get(); } public int getage() { return age.get(); } public void setname(string value) { name.set(value); } public void setage(int value) { age.set(value); } public StringProperty nameproperty() { return name; } public IntegerProperty ageproperty() { return age; } TableViewExamples Projesi

JavaFX Özellikleri ile TableView (2/4) ObservablePerson john = new ObservablePerson("John", 20); ObservablePerson peter = new ObservablePerson("Peter", 22); ObservableList<ObservablePerson> people = FXCollections.observableArrayList(john, peter); TableView<ObservablePerson> tableview = new TableView<>(people); TableViewExamples Projesi

JavaFX Özellikleri ile TableView (3/4) TableColumn<ObservablePerson, String> namecol = new TableColumn<>("Name"); namecol.setcellvaluefactory( new Callback<CellDataFeatures<ObservablePerson, String>, ObservableValue<String>>() { } }); public ObservableValue<String> call( CellDataFeatures<ObservablePerson, String> param) { return param.getvalue().nameproperty(); TableViewExamples Projesi

JavaFX Özellikleri ile TableView (4/4) TableColumn<ObservablePerson, Number> agecol = new TableColumn<>("Age"); agecol.setcellvaluefactory( new Callback<CellDataFeatures<ObservablePerson, Number>, ObservableValue<Number>>() { public ObservableValue<Number> call( CellDataFeatures<ObservablePerson, Number> param) { return param.getvalue().ageproperty(); } }); tableview.getcolumns().addall(namecol, agecol); TableViewExamples Projesi

javafx.scene.control.cell.propertyvaluefactory (1/2) Callback<CellDataFeatures<S, T>, ObservableValue<T>> arayüzünü gerçekleştirir Bir tablo sütunundaki hücre değer fabrikasının (cell value factory) oluşturulmasını kolaylaştırır S nesnesinin JavaFX özelliklerini Java objects via Java yansıma kütüphanesi (reflection API) aracılığıyla elde eder

javafx.scene.control.cell.propertyvaluefactory (2/2) PropertyValueFactory(String property) property: geri çağırım metodundan geri döndürülen özelliğin adı Eğer JavaFX özelliği bulunamazsa, standart JavaBeans özelliği aranır get<property>() method Özellik bir ReadOnlyObjectWrapper nesnesi içerisinde tutulur Eğer özellik değeri değişirse, değişiklik TableView a otomatik olarak yansıtılmaz

PropertyValueFactory Örneği ObservablePerson john = new ObservablePerson("John", 20); ObservablePerson peter = new ObservablePerson("Peter", 22); ObservableList<ObservablePerson> people = FXCollections.observableArrayList(john, peter); TableView<ObservablePerson> tableview = new TableView<>(people); TableColumn<ObservablePerson, String> namecol = new TableColumn<>("Name"); namecol.setcellvaluefactory(new PropertyValueFactory("name")); TableColumn<ObservablePerson, Number> agecol = new TableColumn<>("Age"); agecol.setcellvaluefactory(new PropertyValueFactory("age")); tableview.getcolumns().addall(namecol, agecol); TableViewExamples Projesi

TableView Seçim Modeli (1/2) TableView içerisinde seçili satırları (veya hücreleri) ifade eder TableView ın seçim modelini elde etmek için: TableViewSelectionModel<S> getselectionmodel() TableViewSelectionModel<S> sınıfı: TableView<S> iç sınıfı (inner class) MultipleSelectionModel<S> sınıfının alt sınıfı cellselectionenabled ikili özelliği (boolean property) Sadece hücrelerin seçili seçilemeyeceğini belirtir Varsayılan değer: false Çoklu seçim (satırlar veya hücreler) normal şartlarda aktif değildir

TableView Seçim Modeli (2/2) boolean isselected(int row, TableColumn<S,?> column) Hücre seçimi aktifleştirilmediğinde column değeri olarak null döndürür select(int row, TableColumn<S,?> column) ObservableList<TablePosition> getselectedcells() javafx.scene.control.tableposition<s, T> class int getrow() S getitem() int getcolumn() TableColumn<S, T> gettablecolumn()

TableView Seçim Dinleme Örneği TableViewSelectionModel<ObservablePerson> model = tableview.getselectionmodel(); model.setcellselectionenabled(true); model.setselectionmode(selectionmode.multiple); model.getselectedcells().addlistener(new InvalidationListener() { public void invalidated(observable o) { ObservableList<TablePosition<ObservablePerson,?>> cells = (ObservableList<TablePosition<ObservablePerson,?>>) o; String text = "Selected cells:"; for (TablePosition<ObservablePerson,?> cell : cells) text += " [" + cell.getrow() + ", + cell.getcolumn() + "]"; label.settext(text); } }); TableViewExamples Projesi