JavaFX Temelleri (2)



Benzer belgeler
JavaFX Temelleri (1)

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

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

Burak Kıymaz JAVA FX

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

ASP.NET ile Bir Web Sitesi Oluşturma

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

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.

Programlama Yazılımı ile Web Sitesi Oluşturma

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

BİL-142 Bilgisayar Programlama II

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

BİL-141 Bilgisayar Programlama I (Java)

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

Java Programlamaya Giriş

Android Ders Notları

MOBİL UYGULAMA GELİŞTİRME

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

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

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

YZM 2105 Nesneye Yönelik Programlama

4. Bağlantı (Köprü) Oluşturma

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

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

C# nedir,.net Framework nedir?

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

JSF Melih Sakarya. Java Server Faces Facelet

YZM 2105 Nesneye Yönelik Programlama

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

Client Server Database

MVP ve Mediator ile Loose Coupled, Modüler UI Geliştirme

Proje 1. Arayüz Tasarımı

MOBİL UYGULAMA GELİŞTİRME

Programlama Dillerinde Kullanılan Veri Tipleri

İ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İ

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

Spring Framework Eğitimi

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

PROGRAMLAMA DERSİ 1. İNTERNET

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Klavyeden Basit Giriş/Çıkış İşlemleri

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 5

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

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

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

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

Üst Düzey Programlama

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

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

Basamaklı Stil Şablonları (CSS) BIM206 Web Programlama

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

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

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

2. Belgeye Metin Ekleme

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

1 JAVASCRIPT NEDİR? 1

public static int Toplam int x, int y

TachoMobile Server Uygulaması Kullanım Kılavuzu

Erişim konusunda iki taraf vardır:

POWER BI. Power BI Bileşenleri: Power BI'daki İş Akışı

Javascript Geliştiricileri İçin Xaml Ve Microsoft Silverlight

Üst Düzey Programlama

C++ Dersi: Nesne Tabanlı Programlama

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

emon: Gerçek Zamanlı Gömülü Sistemlerin Çalışma Zamanı Görselleştirilmesi İçin Monitör Yazılımı

HSancak Nesne Tabanlı Programlama I Ders Notları

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

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Kalıtım (Inheritance)

Data Structures Lab Güz

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

MOBİL UYGULAMA GELİŞTİRME

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

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

KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

İNTERNET PROGRAMLAMA II. Tanımlar

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

Üst Düzey Programlama

R ile Programlamaya Giriş ve Uygulamalar

C++ Dersi: Nesne Tabanlı Programlama

HTML Etiketleri Genel Özellikler (Global Attributes)

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

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

MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme

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 04. Görsel Programlama - Ders04/ 1

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

BMH-303 Nesneye Yönelik Programlama

Öğr. Gör. Serkan AKSU 1

19 Şubat 2016 Cuma

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

Turkcell Paf Takımı Proje Raporu. Hazırlayan : Oben IŞIK

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 1. Bölüm C# Programlamaya Giriş

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

WEB FORMLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Transkript:

JavaFX Temelleri (2) Araç İpuçları (Tooltips), Yazı Tipleri (Fonts), Çalışma Ortamları ve Dağıtım Oluşturma, JavaFX Özellikleri (JavaFX Properties), Gözlenebilirlik (Observability), Bağlanımlar (Bindings) ve JavaFX Koleksiyonları (JavaFX Collectıons)

Araç İpuçları (Tooltips) Farenin bir GUI bileşeninin üzerine gelmesi durumunda gösterilen mesajlardır Yazılımın kullanılabilirliğini ve sezgiselliğini arttırır javafx.scene.control.tooltip sınıfı Control sınıfı (Node sınıfının alt sınıfı) nesnelerine atanabilir Control nesneleri: kullanıcı tarafından kullanılabilen (durumu değiştirilebilen) nodlardır javafx.scene.control.control soyut sınıfı Bir Control nesnesine araç ipucu atamak için: void settooltip(tooltip tip) Tooltip sınıfı yapıcısı: Tooltip(String text)

Araç İpucu Örneği Button button = new Button("my button"); button.settooltip(new Tooltip "Button usage tip")); Label label = new Label("my label"); label.settooltip(new Tooltip("This is a label")); rootnode.getchildren().add(button); rootnode.getchildren().add(label); TooltipExample Projesi

Yazı Tipleri Metnin görüntüsünü tanımlar (boyut ve karakterlerin görünümü) javafx.scene.text.font sınıfı Karakterlerin görünümü yazı tipi yüzü (font face) ile tanımlıdır Yazı tipi boyutu nokta (point) cinsinden ifade edilir (1 nokta 1/72 inçtir) Sınıf yapıcıları: Font(double size) System varsayılan yazı tipi yüzünü kullanır Font(String name, double size) name: yazı tipi yüzü adı

Yazı Tipi Örneği Canvas canvas = new Canvas(300, 200); GraphicsContext gc = canvas.getgraphicscontext2d(); gc.filltext("normal text", 50, 50); gc.setfont(new Font(20)); gc.filltext("large text", 50, 100); gc.setfont(new Font("Verdana", 20)); gc.filltext("large Verdana text", 50, 150); rootnode.getchildren().add(canvas); FontExample Projesi

Görsel Arayüzü (UI) Uygulama Mantığından Ayırmak Cascading Style Sheets (CSS) Sahne grafiğindeki herhangi bir noda uygulanabilir Çalışma zamanında herhangi bir sahneye uygulanabilir Uygulama görüntüsü dinamik olarak değiştirilebilir CSS dosyalararı ikili formata çevrilebilir Çalışma zamanında ayrıştırma (parsing) yükü azalır ve uygulama performansı artar FXML: XML tabanlı işaret dili (markup language) Sahne grafiği FXML dosyası içerisinde nodların bir hiyerarşisi olarak gösterilebilir JavaFX Sahne Oluşturucu (JavaFX Scene Builder) FXML dosyaları oluşturmak için kullanılan grafiksel araç

Çalışma Ortamları (1/2) Kendi başına çalışan program (standalone program) Application.launch() metodunu çağıracak statik bir main() metodu gerektirir Java Web Start Uygulama, bir web sayfasındaki bağlantıya web tarayıcısından tıklanarak indirilir ve çalıştırılır

Çalışma Ortamları (2/2) Bir web sayfası içerisinde JavaScript kodu ile birlikte Uygulama, bir web sayfası web tarayıcısında yüklendiğinde JavaScript aracılığıyla çalıştırılır Uygulama web sayfası ile iletişim kurabilir Sınırlandırılmış ortam (sandbox) Web tarayıcısından veya bir web sayfasından başlatılan uygulamalarda kullanılır Zararlı kodlara karşı koruma sağlar

NetBeans ile Paketleme ve Dağıtım Projeler (Projects) penceresinden JavaFX projesini seçin Menülerden Run Build Project Proje dizininde build ve dist dizinleri oluşturulacaktır build dizini: derlenmiş Java sınıfları (.class dosyaları) dist dizini: kullanıcıya dağıtılabilir dosyalar.jar file: tek başına çalıştırılabilir uygulama.jnlp file: uygulamayı Java Web Start ile çalıştırır.html file: uygulamanın gömüldüğü web sayfası

NetBeans ile Kurulum Dosyası Oluşturma NetBeans ile JavaFX uygulamalarınız için platform bağımlı kurulum dosyaların oluşturabilirsiniz. Örn: Windows için installer.exe Şu an için desteklenen platformlar: Windows MacOS Linux Daha fazla detay için: https://blogs.oracle.com/talkingjavadeployment/entry/native_packaging_for_javafx

JavaFX Özellikleri Stantart Java özellikleri JavaBeans Bileşen Mimarisini kullanır Gizli (private) sınıf üyelerine standartlaştırılmış açık (public) metotlar kullanılarak erişilebilir Getter ve setter metotları JavaFX özellikleri JavaBeans özelliklerini genişletir Her bir Java temel veri tipi için özellik sınıfları tanımlıdır Tüm özellik sınıfları Property<T> arayüzünü gerçekleştirir JavaFX özellikleri, özellik sınıflarının örnekleridir Özellik değerleri için getter ve setter metotları bulunur Özelliklerin kendileri için getter metotları vardır

Özellikler Örneği class Exam { private final FloatProperty score = new SimpleFloatProperty(6); public float getscore() { return score.get(); } public void setscore(float value) { score.set(value); } } public FloatProperty scoreproperty() { return score; } PropertiesExample Projesi

Gözlenebilirlik Observable Arayüzü Gözlenebilir nesne (observable object), içeriği değiştiğinde kendisini gözleyen gözlemcilere (observer) haber verir javafx.beans.observable arayüzü void addlistener(invalidationlistener listener) void removelistener(invalidationlistener listener)

Gözlenebilirlik InvalidationListener Arayüzü javafx.beans.invalidationlistener arayüzü void invalidated(observable observable) invalidated() metodu gözlemlenebilir nesne içeriği geçersiz olduğunda çağırılır Bir değer, içeriği en son değiştiğinden beri tekrar alınmamışsa geçersiz olur

Özellik Gözlenebilirliği Observable arayüzünü temel alan ObservableValue<T> arayüzü void addlistener(changelistener<? super T> listener) void removelistener(changelistener<? super T> listener) T getvalue() Gözlenebilir değer değiştiğinde, getvalue() metotu çağırılana kadar geçersiz olur Property<T> arayüzü ObservableValue<T> arayüzünü temel alır Gözlemci nesneler ChangeListener<T> arayüzünü gerçekleştirir void changed(observablevalue<? extends T> observable, T oldvalue, T newvalue)

Özellik Gözlemcisi Örneği Exam mathsexam = new Exam(); mathsexam.scoreproperty().addlistener( new ChangeListener() { public void changed(observablevalue o, Object oldval, Object newval) { } }); System.out.println("Old score " + oldval + ", new score " + newval); mathsexam.setscore(10); PropertiesExample Projesi

Bağlanımlar (Bindings) - Bağlılıklar Bağlı nesneler belli bir değeri bir veya daha fazla kaynak nesneyi kullanarak hesaplarlar Kaynak nesneler: bağlılıklar ObservableValue<T> arayüzünü gerçekleştirirler

Bağlanımlar (Bindings) Bağlanım bağlılıklarını gözlemlerler Binding<T> arayüzü ObservableValue<T> arayüzünü temel alır Bağlanımlar gözlemlenebilirdir. Bu yüzden başka bağlanımlar için bir bağlılıktır Bağlanımlar, Bindings sınıfının statik metotları kullanılarak oluşturulurlar Örnek bağlanımlar: Matematiksel, mantıksal veya String ifadeler

Bağlanım Örneği DoubleProperty num = new SimpleDoubleProperty(1.22); DoubleProperty denom = new SimpleDoubleProperty(6.1); NumberBinding division = Bindings.divide(num, denom); System.out.println(division.getValue()); // 0.2 num.set(24.4); System.out.println(division.getValue()); // 4.0 denom.set(12.2); System.out.println(division.getValue()); // 2.0 BindingExample Projesi

Bağlanım Gözlemcisi Örneği Exam mathsexam = new Exam(); Exam physicsexam = new Exam(); NumberBinding avgscore = Bindings.divide( Bindings.add(mathsExam.scoreProperty(), physicsexam.scoreproperty()), 2); avgscore.addlistener(new InvalidationListener() { public void invalidated(observable o) { System.out.println("Observable invalidated"); } }); mathsexam.setscore(10); // Observer is notified System.out.println("Average score: " + avgscore.getvalue()); BindingObserverExample Projesi

Bağlanım Alıştırması Student sınıfı özellikleri: studyingdays: tamsayı özellik studyinghours: float özellik Günlük ortalama çalışma saatini gözlemleyin Student mystudent = new Student(); mystudent.setstudyingdays(1); mystudent.setstudyinghours(6);... mystudent.setstudyingdays(mystudent.getstudyingdays() + 1); mystudent.setstudyinghours(mystudent.getstudyinghours() + 9);

Bağlanım Alıştırması Çözümü NumberBinding hoursperday = Bindings.divide( mystudent.studyinghoursproperty(), mystudent.studyingdaysproperty()); hoursperday.addlistener(new ChangeListener() { public void changed(observablevalue o, Object oldval, Object newval) { System.out.println("average hours per day: " + newval); } }); BindingExercise Projesi

JavaFX Koleksiyonları Standart Java koleksiyonları: List<T>, Map<K, V> JavaFX koleskiyonları liste (list) ve haritalara (map) gözlenebilirlik ekler: ObservableList, ObservableMap arayüzleri Observable arayüzünü temel alır ListChangeListener, MapChangeListener: gözlemci arayüzleri ListChangeListener.Change, MapChangeListener.Change: gözlemcilere bildirilen değişiklikler ObservableList ve ObservableMap nesneleri, listeleri ve haritaları kapsayacak şekilde oluşturulur: FXCollections

JavaFX Koleksiyonu Örnekleri (1/2) List<String> list = new ArrayList<String>(); ObservableList<String> observablelist = FXCollections.observableList(list); observablelist.addlistener( new ListChangeListener() { public void onchanged ( ListChangeListener.Change change) { System.out.println("list has changed"); } }); observablelist.add("first item"); CollectionsExamples Projesi

JavaFX Koleksiyonu Örnekleri (2/2) Map<String, String> map = new HashMap<String, String>(); ObservableMap<String, String> observablemap = FXCollections.observableMap(map); observablemap.addlistener(new MapChangeListener() { public void onchanged(mapchangelistener.change change) { System.out.println("map has changed"); } }); observablemap.put("first key", "first value"); observablemap.put("second key", "second value"); observablemap.remove("first key"); CollectionsExamples Projesi