JavaFX - Hızlı Kılavuz
Rich Internet Applicationsmasaüstü uygulamalarıyla benzer özellikler ve deneyim sağlayan web uygulamalarıdır. Kullanıcılara normal web uygulamalarına göre daha iyi bir görsel deneyim sunarlar. Bu uygulamalar, tarayıcı eklentileri veya sanal bir makine olarak sunulur ve geleneksel statik uygulamaları daha gelişmiş, akıcı, hareketli ve ilgi çekici uygulamalara dönüştürmek için kullanılır.
Geleneksel masaüstü uygulamalarının aksine, RIA'ların çalışması için herhangi bir ek yazılıma gerek yoktur. Alternatif olarak, Uygulamaya bağlı olarak ActiveX, Java, Flash gibi yazılımlar yüklemelisiniz.
Bir RIA'da, zengin grafikler için destek sağlayan bir eklentiye sahip olduğu için, grafik sunum istemci tarafında işlenir. Özetle, bir RIA'da veri manipülasyonu sunucu tarafında gerçekleştirilirken, ilgili nesne manipülasyonu istemci tarafında gerçekleştirilir.
DEA geliştirebileceğimiz üç ana teknolojimiz var. Bunlar aşağıdakileri içerir -
- Adobe Flash programı
- Microsoft Silverlight
- JavaFX
Adobe Flash programı
Bu yazılım platformu Adobe Systems tarafından geliştirilmiştir ve Zengin İnternet Uygulamaları oluşturmada kullanılır. Bunların yanı sıra Vektör, Animasyon, Tarayıcı Oyunları, Masaüstü Uygulamaları, Mobil Uygulamalar ve Oyunlar gibi diğer Uygulamaları da oluşturabilirsiniz.
Bu,% 96'lık bir masaüstü tarayıcı penetrasyon oranıyla RIA'ları geliştirmek ve yürütmek için en yaygın kullanılan platformdur.
Microsoft Silverlight
Tıpkı Adobe flash gibi, Microsoft Silverlight da Zengin İnternet Uygulamalarını geliştirmek ve yürütmek için bir yazılım uygulama çerçevesidir. Başlangıçta bu çerçeve, medya akışı için kullanıldı. Mevcut sürümler multimedya, grafikler ve animasyonu da destekler.
Bu platform,% 66'lık bir masaüstü tarayıcı penetrasyon oranıyla nadiren kullanılır.
JavaFX
JavaFX, Zengin İnternet Uygulamaları geliştirebileceğiniz bir Java kitaplığıdır. Java teknolojisini kullanan bu uygulamaların tarayıcı penetrasyon oranı% 76'dır.
JavaFX nedir?
JavaFX, Zengin İnternet Uygulamaları oluşturmak için kullanılan bir Java kitaplığıdır. Bu kitaplık kullanılarak yazılan uygulamalar, birden çok platformda tutarlı bir şekilde çalışabilir. JavaFX kullanılarak geliştirilen uygulamalar, Masaüstü Bilgisayarlar, Cep Telefonları, TV'ler, Tabletler gibi çeşitli cihazlarda çalışabilir.
Geliştirmek GUI Applications Java programlama dilini kullanan programcılar aşağıdaki kitaplıklara güvenirler: Advanced Windowing Toolkit ve Swing. JavaFX'in ortaya çıkmasından sonra, bu Java programcıları artık zengin içerikle GUI uygulamalarını etkili bir şekilde geliştirebilirler.
JavaFX ihtiyacı
Geliştirmek Client Side ApplicationsZengin özelliklere sahip programcılar, Medya, UI kontrolleri, Web, 2D ve 3D gibi özellikler eklemek için çeşitli kitaplıklara güveniyorlardı. JavaFX, tüm bu özellikleri tek bir kitaplıkta içerir. Bunlara ek olarak, geliştiriciler bir Java kitaplığının mevcut özelliklerine de erişebilirler.Swing.
JavaFX, zengin bir grafik ve medya API seti sağlar ve modern Graphical Processing Unitdonanım hızlandırmalı grafikler aracılığıyla. JavaFX ayrıca geliştiricilerin grafik animasyonunu ve UI kontrolünü birleştirebilecekleri arayüzler sağlar.
JavaFX, Java, Groovy ve JRuby gibi JVM tabanlı teknolojilerle kullanılabilir. Geliştiriciler JavaFX'i tercih ederse, yukarıda bahsedilen teknolojilerden herhangi birinin önceden bilgisi JavaFX kullanarak RIA'ları geliştirmek için yeterince iyi olacağından, ek teknolojileri öğrenmeye gerek yoktur.
JavaFX'in Özellikleri
Aşağıda JavaFX'in bazı önemli özellikleri verilmiştir -
Written in Java - JavaFX kitaplığı Java ile yazılmıştır ve bir JVM'de çalıştırılabilen diller için mevcuttur; Java, Groovy and JRuby. Bu JavaFX uygulamaları da platformdan bağımsızdır.
FXMLJavaFX, HTML benzeri bildirim temelli biçimlendirme dili olan FXML olarak bilinen bir dile sahiptir. Bu dilin tek amacı bir kullanıcı Arayüzü tanımlamaktır.
Scene Builder- JavaFX, Scene Builder adlı bir uygulama sağlar. Bu uygulamayı Eclipse ve NetBeans gibi IDE'lere entegre ederken, kullanıcılar FXML uygulamaları geliştirmek için kullanılan bir sürükle ve bırak tasarım arayüzüne erişebilirler (tıpkı Swing Drag & Drop ve DreamWeaver Uygulamaları gibi).
Swing Interoperability - Bir JavaFX uygulamasında, Swing içeriğini Swing Nodesınıf. Benzer şekilde, mevcut Swing uygulamalarını gömülü web içeriği ve zengin grafik ortamı gibi JavaFX özellikleriyle güncelleyebilirsiniz.
Built-in UI controls - JavaFX kitaplığı, tam özellikli bir uygulama geliştirebileceğimiz UI kontrollerini sağlar.
CSS like Styling- JavaFX, CSS benzeri bir stil sağlar. Bunu kullanarak, uygulamanızın tasarımını basit bir CSS bilgisi ile geliştirebilirsiniz.
Canvas and Printing API- JavaFX, API oluşturma API'sinin anlık mod stili olan Canvas'ı sağlar. Paketin içindejavafx.scene.canvasdoğrudan JavaFX sahnesinin bir alanı içinde çizebileceğimiz tuval için bir dizi sınıf tutar. JavaFX ayrıca pakette Yazdırma amaçları için sınıflar sağlarjavafx.print.
Rich set of API’s- JavaFX kitaplığı, GUI uygulamaları, 2D ve 3D grafikler vb. Geliştirmek için zengin bir API kümesi sağlar. Bu API kümesi, Java platformunun yeteneklerini de içerir. Bu nedenle, bu API'yi kullanarak Generics, Annotations, Multithreading ve Lambda Expressions gibi Java dillerinin özelliklerine erişebilirsiniz. Geleneksel Java Koleksiyonları kütüphanesi geliştirildi ve gözlemlenebilir listeler ve haritalar gibi kavramlar buna dahil edildi. Kullanıcılar bunları kullanarak veri modellerindeki değişiklikleri gözlemleyebilirler.
Integrated Graphics library - JavaFX, 2d ve 3d grafikler.
Graphics pipeline- JavaFX, Prism olarak bilinen Donanım hızlandırmalı grafik hattına dayalı grafikleri destekler. Desteklenen bir Grafik Kartı veya GPU ile kullanıldığında pürüzsüz grafikler sunar. Sistemin grafik kartını desteklememesi durumunda prizma varsayılan olarak yazılım oluşturma yığınına döner.
JavaFX Tarihçesi
JavaFX, orijinal olarak Chris Oliveradlı bir şirkette çalışırken See Beyond Technology Corporation, daha sonra tarafından satın alındı Sun Microsystems 2005 yılında.
Aşağıdaki noktalar bize bu proje hakkında daha fazla bilgi verir -
Başlangıçta bu proje F3 olarak adlandırıldı (Form Follows Functions) ve GUI Uygulamaları geliştirmek için daha zengin arayüzler sağlamak amacıyla geliştirilmiştir.
Sun Microsystems Haziran 2005'te See Beyond şirketini satın alarak F3 projesini şu şekilde uyarladı: JavaFX.
2007 yılında, JavaFX resmi olarak şu adreste duyuruldu: Java One, her yıl düzenlenen dünya çapında bir web konferansı.
2008 yılında Net BeansJavaFX ile entegre mevcuttu. Aynı yıl JavaStandard Development Kit JavaFX 1.0 için piyasaya sürüldü.
2009 yılında Oracle Corporation, Sun Microsystems'i satın aldı ve aynı yıl bir sonraki JavaFX (1.2) sürümü de piyasaya sürüldü.
2010 yılında JavaFX 1.3 çıktı ve 2011 yılında JavaFX 2.0 piyasaya sürüldü.
En son sürüm olan JavaFX8, Java'nın ayrılmaz bir parçası olarak 18 Mart 2014 tarihinde piyasaya sürüldü.
Java8'den itibaren JDK (Java Development Kit) içerir JavaFXiçinde kütüphane. Bu nedenle, JavaFX uygulamalarını çalıştırmak için sisteminize Java8 veya sonraki bir sürümünü yüklemeniz yeterlidir.
Buna ek olarak, Eclipse ve NetBeans gibi IDE'ler JavaFX için destek sağlar. Bu bölüm, JavaFX Uygulamalarını çeşitli şekillerde çalıştırmak için ortamı nasıl ayarlayacağınızı öğretir.
Java8 yükleme
Öncelikle, komut istemini açıp içine “Java” komutunu yazarak sisteminizde Java yüklü olup olmadığını doğrulamanız gerekecektir.
Sisteminize Java yüklemediyseniz, komut istemi aşağıdaki ekran görüntüsünde gösterilen mesajı görüntüler.
Ardından, aşağıda verilen adımları izleyerek Java'yı yükleyin.
Step 1- JavaSE İndirmeleri Sayfasını ziyaret edin, JDK'ya tıklayınDownload aşağıdaki ekran görüntüsünde vurgulandığı gibi düğme
Step 2 - İndir düğmesine tıkladığınızda, şuraya yönlendirileceksiniz: Java SE Development Kit 8 Downloadssayfa. Bu sayfa size çeşitli platformlar için JDK bağlantıları sağlar.
Lisans sözleşmesini kabul edin ve ilgili bağlantıya tıklayarak gerekli yazılımı indirin.
Örneğin, bir Windows 64-bit İşletim Sistemi üzerinde çalışıyorsanız, aşağıdaki ekran görüntüsünde vurgulanan JDK sürümünü indirmeniz gerekir.
Vurgulanan bağlantıya tıklandığında, Windows 64-bit İşletim Sistemine uygun Java8 Geliştirme Kiti sisteminize indirilecektir.
Step 3 - JDK8 kurulumunu başlatmak için indirilen ikili çalıştırılabilir dosyayı çalıştırın.
Step 4 - Kurulum Dizinini seçin.
Step 5 - Hedef klasörü seçip İleri'yi tıkladığınızda, JavaFX yükleme işlemi aşağıdaki ekran görüntüsünde gösterildiği gibi ilerleme çubuğunu görüntülemeye başlar.
Step 6 - Gerekirse kurulum dizinini değiştirin, aksi takdirde varsayılanları koruyun ve devam edin.
Step 7 - Aşağıdaki ekran görüntüsünde gösterildiği gibi Kapat düğmesini tıklayarak kurulum işlemini bitirin.
Windows için Yolu Ayarlama
Java'yı yükledikten sonra, yol değişkenlerini ayarlamanız gerekir. Java'yı şuraya yüklediğinizi varsayalım:C:\Program Files\java\jdk1.8.0_91dizin.
Şimdi aşağıda verilen adımları takip edebilirsiniz -
"Bilgisayarım" ı sağ tıklayın ve "Özellikler" i seçin.
"Gelişmiş" sekmesinin altındaki "Ortam Değişkenleri" düğmesini tıklayın.
Şimdi, 'Yol' değişkenini, Java yürütülebilir dosyasının yolunu da içerecek şekilde değiştirin. Örneğin, yol şu anda 'C: \ WINDOWS \ SYSTEM32' olarak ayarlanmışsa, yolunuzu 'C: \ WINDOWS \ SYSTEM32; C: \ Program Files \ java \ jdk1.8.0_91 \ bin '.
JavaFX'in NetBeans Ortamını Ayarlama
NetBeans8JavaFX için dahili destek sağlar. Bunu yüklerken, herhangi bir ek eklenti veya JAR dosyası olmadan bir JavaFX uygulaması oluşturabilirsiniz. NetBeans ortamını kurmak için aşağıda verilen adımları izlemeniz gerekecektir.
Step 1- NetBeans yazılımını indirmek için NetBeans web sitesi NetBeans web sitesini ziyaret edin ve İndir düğmesini tıklayın.
Step 2 - Tıklandığında Download, çeşitli Java uygulamaları için NetBeans paketleri sağlayan NetBeans yazılımının İndirilenler sayfasına ulaşacaksınız. NetBeans yazılımını indirinJavaSE aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 3 - Bu düğmeyi tıkladığınızda, adlı bir dosya netbeans-8.0-windows.exe sisteminize indirilecektir. Yüklemek için bu dosyayı çalıştırın. Bu dosyayı çalıştırırken, aşağıdaki ekran görüntüsünde gösterildiği gibi bir NetBeans yükleyicisi başlayacaktır.
Yapılandırmanın tamamlanmasından sonra, Welcome Page of the installer.
Step 4 - İleri düğmesine tıklayın ve kuruluma devam edin.
Step 5 - Bir sonraki pencerede NETBEANS IDE 8.0 license agreement. Dikkatlice okuyun ve "Lisans sözleşmesinin koşullarını kabul ediyorum" onay kutusunu işaretleyerek sözleşmeyi kabul edin ve ardındanNext buton.
Step 6 - Bir sonraki pencerede, lisans sözleşmesiyle karşılaşacaksınız. Junit, "Lisans sözleşmesinin koşullarını kabul ediyorum, JUnit'i Yükle" seçeneğindeki radyo düğmesini seçerek kabul edin ve Next.
Step 7- Netbeans 8.0'ın kurulmasını istediğiniz hedef dizini seçin. Ayrıca, dizine de göz atabilirsiniz.Java Development Kit sisteminize kurulur ve Next buton.
Step 8 - Benzer şekilde, hedef dizini seçin Glassfish ServerKurulum. Java Geliştirme Kiti dizinine göz atın (şimdi Glassfish Referansı için) ve ardındanNext.
Step 9 - Kontrol edin Check for Updates otomatik güncellemeler kutusunu seçin ve kurulumu başlatmak için Yükle düğmesine tıklayın.
Step 10 - Bu adım, NetBeans IDE 8.0 kurulumunu başlatır ve biraz zaman alabilir.
Step 11 - İşlem tamamlandığında, Finish Kurulumu bitirmek için düğmesine basın.
Step 12 - NetBeans IDE'yi başlattığınızda, aşağıdaki ekran görüntüsünde gösterildiği gibi başlangıç sayfasını göreceksiniz.
Step 13 - Dosya menüsünde New Project... aşağıdaki ekran görüntüsünde gösterildiği gibi Yeni proje sihirbazını açmak için.
Step 14 - içinde New Project sihirbaz, seçin JavaFX ve tıklayın Next. Sizin için yeni bir JavaFX Uygulaması oluşturmaya başlar.
Step 15 - Projenin adını ve projenin konumunu seçin. NewJavaFX Application penceresini açın ve ardından tıklayın Finish. Verilen isimle örnek bir uygulama oluşturur.
Bu örnekte, adı olan bir uygulama javafxsampleyaratıldı. Bu uygulama içinde NetBeans IDE, şu adla bir Java programı oluşturacaktır:Javafxsample.java. Aşağıdaki ekran görüntüsünde gösterildiği gibi, bu program NetBeans Kaynak Paketleri içinde oluşturulacaktır.→ javafxsample.
Step 16 - Dosyayı sağ tıklayın ve seçin Run File Bu kodu aşağıdaki ekran görüntüsünde gösterildiği gibi çalıştırmak için.
Otomatik olarak oluşturulan bu program, etiketli bir düğmeye sahip basit bir JavaFX penceresi oluşturan kodu içerir. Say ‘Hello World’içinde. Bu düğmeye her tıkladığınızda, diziHello World aşağıda gösterildiği gibi konsolda görüntülenecektir.
Eclipse'e JavaFX yükleme
Adlı bir eklenti e(fx)clipse, JavaFX'te de mevcuttur. Eclipse'de JavaFX'i ayarlamak için aşağıdaki adımları kullanabilirsiniz. Öncelikle sisteminizde Eclipse bulunduğundan emin olun. Değilse, sisteminize Eclipse'i indirin ve kurun.
Eclipse kurulduktan sonra, kurmak için aşağıdaki adımları izleyin. e(fx)clipse sisteminizde.
Step 1 - Eclipse'i aç Help menü ve seçin Install New Software… Aşağıda gösterildiği gibi seçenek.
Tıkladıktan sonra, Available Software penceresi, aşağıdaki ekran görüntüsünde gösterildiği gibi.
Metin kutusunda Work with Bu pencerede, gerekli yazılım için eklentinin bağlantısını sağlamanız gerekir.
Step 2 - tıklayın Add… buton. Eklentinin adını şu şekilde girin:e(fx)clipse. Ardından, konum olarak aşağıdaki bağlantıyı sağlayın.http://download.eclipse.org/efxclipse/updates-released/2.3.0/site/
Step 3 - Eklentinin adını ve konumunu belirledikten sonra, aşağıdaki ekran görüntüsünde vurgulandığı gibi Tamam düğmesini tıklayın.
Step 4 - Eklentiyi ekledikten hemen sonra, için iki onay kutusu bulacaksınız. e(fx)clipse – install ve e(fx)clipse – single components. Bu iki onay kutusunu da işaretleyin veAdd… Düğmesine aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 5- Sonra, Eclipse IDE'nizi açın. Dosya menüsünü tıklayın ve aşağıdaki ekran görüntüsünde gösterildiği gibi Proje'yi seçin.
Step 6- Ardından, bir proje oluşturmak için Eclipse tarafından sağlanan sihirbazların bir listesini görebileceğiniz bir pencere açacaksınız. GenişletinJavaFX sihirbaz, seçin JavaFX Project ve tıklayın Next düğmesine aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 7 - Tıklandığında NextYeni Proje Sihirbazı açılır. Buraya gerekli proje adını yazabilir veFinish.
Step 8- Bitir tıklandığında, verilen adla (örnek) bir uygulama oluşturulur. Adlı alt paketteapplicationadlı bir program Main.java aşağıda gösterildiği gibi oluşturulur.
Step 9- Otomatik olarak oluşturulan bu program, boş bir JavaFX penceresi oluşturacak kodu içerir. Bu dosyaya sağ tıklayın, seçinRun As → Java Application aşağıdaki ekran görüntüsünde gösterildiği gibi.
Bu uygulamayı çalıştırdığınızda, aşağıda gösterildiği gibi size boş bir JavaFX penceresi verir.
Note - Sonraki bölümlerde kod hakkında daha fazla tartışacağız.
JavaFX, zengin grafiklere sahip GUI uygulamaları oluşturmak için zengin sınıflar ve arabirimler içeren eksiksiz bir API sağlar. Bu API'nin önemli paketleri:
javafx.animation - JavaFX düğümlerine dolgu, solma, döndürme, ölçekleme ve çevirme gibi geçiş tabanlı animasyonlar eklemek için sınıflar içerir.
javafx.application - JavaFX uygulama yaşam döngüsünden sorumlu bir dizi sınıf içerir.
javafx.css - JavaFX GUI uygulamalarına CSS benzeri stil eklemek için sınıflar içerir.
javafx.event - JavaFX olaylarını iletmek ve işlemek için sınıflar ve arayüzler içerir.
javafx.geometry - 2D nesneleri tanımlamak ve üzerlerinde işlem yapmak için sınıflar içerir.
javafx.stage - Bu paket, JavaFX uygulaması için en üst düzey konteyner sınıflarını içerir.
javafx.scene- Bu paket, sahne grafiğini desteklemek için sınıflar ve arayüzler sağlar. Buna ek olarak, tuval, grafik, kontrol, efekt, görüntü, giriş, düzen, medya, boyama, şekil, metin, dönüştürme, web vb. Gibi alt paketler de sağlar. .
Aşağıdaki şekil JavaFX API mimarisini gösterir. Burada JavaFX API'yi destekleyen bileşenleri görebilirsiniz.
Sahne Grafiği
JavaFX'te, GUI Uygulamaları bir Sahne Grafiği kullanılarak kodlandı. Sahne Grafiği, GUI Uygulamasının oluşturulmasının başlangıç noktasıdır. Düğümler olarak adlandırılan (GUI) uygulama ilkelerini tutar.
Bir düğüm görsel / grafiksel bir nesnedir ve şunları içerebilir:
Geometrical (Graphical) objects - (2D ve 3D), örneğin daire, dikdörtgen, çokgen vb.
UI controls - Düğme, Onay Kutusu, Seçim kutusu, Metin Alanı vb.
Containers - Kenar Bölmesi, Izgara Bölmesi, Akış Bölmesi vb. Gibi (düzen bölmeleri)
Media elements - ses, video ve görüntü nesneleri gibi.
Genel olarak, bir düğüm koleksiyonu bir sahne grafiği oluşturur. Tüm bu düğümler, aşağıda gösterildiği gibi hiyerarşik bir sırada düzenlenmiştir.
Sahne grafiğindeki her düğümün tek bir ebeveyni vardır ve herhangi bir üst öğe içermeyen düğüm, root node.
Aynı şekilde, her düğümün bir veya daha fazla çocuğu vardır ve çocuksuz düğüm şu şekilde adlandırılır: leaf node; çocuklu bir düğüm olarak adlandırılırbranch node.
Bir düğüm örneği, sahne grafiğine yalnızca bir kez eklenebilir. Bir sahne grafiğinin düğümlerinde Efektler, Opaklık, Dönüşümler, Olay İşleyicileri, Olay İşleyicileri, Uygulamaya Özel Durumlar olabilir.
Prizma
Prizma bir high performance hardware–accelerated graphical pipelineJavaFX'te grafikleri işlemek için kullanılır. Hem 2 boyutlu hem de 3 boyutlu grafikleri işleyebilir.
Grafik oluşturmak için Prism kullanır -
- Windows XP ve Vista'da DirectX 9.
- Windows 7'de DirectX 11.
- Mac ve Linux'ta OpenGL, Gömülü Sistemler.
Sistemdeki grafikler için donanım desteğinin yeterli olmaması durumunda, Prism grafikleri işlemek için yazılım oluşturma yolunu kullanır.
Desteklenen bir Grafik Kartı veya GPU ile kullanıldığında daha pürüzsüz grafikler sunar. Sistemin bir grafik kartını desteklememesi durumunda, Prism varsayılan olarak yazılım oluşturma yığınını kullanır (yukarıdaki ikisinden biri).
GWT (Cam Pencereleme Araç Seti)
Adından da anlaşılacağı gibi GWT, Windows'u, Zamanlayıcıları, Yüzeyleri ve Olay Kuyruklarını yönetmek için hizmetler sağlar. GWT, JavaFX Platformunu Yerel İşletim Sistemine bağlar.
Kuantum Araç Seti
Prism, Glass, Media Engine ve Web Engine'in düşük seviyeli bileşenlerine dair bir soyutlamadır. Prism ve GWT'yi birbirine bağlar ve bunları JavaFX için kullanılabilir hale getirir.
Web Görünümü
JavaFX kullanarak, HTML içeriğini bir sahne grafiğine de gömebilirsiniz. WebView, bu içeriği işlemek için kullanılan JavaFX bileşenidir. Adlı bir teknoloji kullanırWeb Kit, dahili bir açık kaynaklı web tarayıcı motoru olan. Bu bileşen, HTML5, CSS, JavaScript, DOM ve SVG gibi farklı web teknolojilerini destekler.
WebView kullanarak şunları yapabilirsiniz:
- Yerel veya uzak URL'den HTML içeriğini oluşturun.
- Destek geçmişi ve Geri ve İleri gezinme sağlar.
- İçeriği yeniden yükleyin.
- Web bileşenine efektler uygulayın.
- HTML içeriğini düzenleyin.
- JavaScript komutlarını yürütün.
- Olayları yönetin.
Genel olarak, WebView kullanarak web içeriğini Java'dan kontrol edebilirsiniz.
Medya Motoru
JavaFX media engine olarak bilinen açık kaynaklı bir motoru temel alır Streamer. Bu medya motoru, video ve ses içeriğinin oynatılmasını destekler.
JavaFX ortam motoru, aşağıdaki dosya biçimleri için ses desteği sağlar -
Audio |
|
---|---|
Video |
|
Paket javafx.scene.mediaJavaFX'te ortam işlevselliği sağlamak için sınıfları ve arabirimleri içerir. Üç bileşen şeklinde sağlanır:
Media Object - Bu bir medya dosyasını temsil eder
Media Player - Medya içeriğini oynatmak için.
Media View - Medyayı görüntülemek için.
Bu bölümde, bir JavaFX uygulamasının yapısını ayrıntılı olarak tartışacağız ve ayrıca bir örnekle bir JavaFX uygulaması oluşturmayı öğreneceğiz.
JavaFX Uygulama Yapısı
Genel olarak, bir JavaFX uygulamasının üç ana bileşeni olacaktır: Stage, Scene ve Nodes aşağıdaki diyagramda gösterildiği gibi.
Sahne
Bir aşama (bir pencere) bir JavaFX uygulamasının tüm nesnelerini içerir. Tarafından temsil edilmektedirStage paketin sınıfı javafx.stage. Birincil aşama, platformun kendisi tarafından oluşturulur. Oluşturulan aşama nesnesi bir argüman olarak iletilir.start() yöntemi Application sınıf (sonraki bölümde açıklanmıştır).
Bir aşamanın, konumunu belirleyen iki parametresi vardır: Width ve Height. İçerik Alanı ve Dekorasyonlar (Başlık Çubuğu ve Kenarlıklar) olarak ikiye ayrılır.
Beş tür aşama mevcuttur -
- Decorated
- Undecorated
- Transparent
- Unified
- Utility
Aramalısın show() bir aşamanın içeriğini görüntüleme yöntemi.
Faliyet alani, sahne
Sahne, bir JavaFX uygulamasının fiziksel içeriğini temsil eder. Bir sahne grafiğinin tüm içeriğini içerir. SınıfScene paketin javafx.scenesahne nesnesini temsil eder. Bir örnekte, sahne nesnesi yalnızca bir aşamaya eklenir.
Sahne Sınıfını örnekleyerek bir sahne oluşturabilirsiniz. Sahnenin boyutlarını (yükseklik ve genişlik) birlikte geçerek seçebilirsiniz.root node yapıcısına.
Sahne Grafiği ve Düğümler
Bir scene graphbir sahnenin içeriğini temsil eden ağaç benzeri bir veri yapısıdır (hiyerarşik). Aksine, birnode bir sahne grafiğinin görsel / grafiksel bir nesnesidir.
Bir düğüm şunları içerebilir -
Geometrik (Grafik) nesneler (2D ve 3D) - Daire, Dikdörtgen, Çokgen, vb.
- Düğme, Onay Kutusu, Seçim Kutusu, Metin Alanı vb. UI Kontrolleri.
Kenar Bölmesi, Izgara Bölmesi, Akış Bölmesi vb. Gibi Kaplar (Düzen Bölmeleri)
Ses, Video ve Görüntü Nesneleri gibi medya öğeleri.
Node Paketin sınıfı javafx.scene JavaFX'te bir düğümü temsil eder, bu sınıf tüm düğümlerin süper sınıfıdır.
Daha önce tartışıldığı gibi bir düğüm üç türdendir -
Root Node - İlk Sahne Grafiği, Kök düğümü olarak bilinir.
Branch Node/Parent Node- Alt düğümleri olan düğüm, dal / ana düğümler olarak bilinir. Soyut sınıfParent paketin javafx.scene tüm ana düğümlerin temel sınıfıdır ve bu üst düğümler aşağıdaki türlerden olacaktır -
Group- Bir grup düğümü, alt düğümlerin bir listesini içeren toplu bir düğümdür. Grup düğümü her oluşturulduğunda, tüm alt düğümleri sırayla oluşturulur. Gruba uygulanan herhangi bir dönüşüm, etki durumu tüm alt düğümlere uygulanacaktır.
Region - Grafik, Bölme ve Kontrol gibi tüm JavaFX Düğüm tabanlı UI Kontrollerinin temel sınıfıdır.
WebView - Bu düğüm web motorunu yönetir ve içeriğini görüntüler.
Leaf Node- Alt düğümleri olmayan düğüm, yaprak düğüm olarak bilinir. Örneğin, Dikdörtgen, Ellipse, Box, ImageView, MediaView yaprak düğüm örnekleridir.
Kök düğümün sahne grafiğine aktarılması zorunludur. Grup kök olarak aktarılırsa, tüm düğümler sahneye kırpılır ve sahnenin boyutundaki herhangi bir değişiklik sahnenin düzenini etkilemez.
JavaFX Uygulaması Oluşturma
Bir JavaFX uygulaması oluşturmak için, Uygulama sınıfını başlatmanız ve soyut yöntemini uygulamanız gerekir. start(). Bu yöntemde JavaFX Uygulamasının kodunu yazacağız.
Uygulama Sınıfı
Application paketin sınıfı javafx.applicationuygulamanın JavaFX'teki giriş noktasıdır. Bir JavaFX uygulaması oluşturmak için, bu sınıfı miras almanız ve soyut yöntemini uygulamanız gerekir.start(). Bu yöntemde, JavaFX grafikleri için kodun tamamını yazmanız gerekir.
İçinde main yöntemini kullanarak uygulamayı başlatmanız gerekir. launch()yöntem. Bu yöntem dahili olarakstart() Aşağıdaki programda gösterildiği gibi Application sınıfının yöntemi.
public class JavafxSample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
/*
Code for JavaFX application.
(Stage, scene, scene graph)
*/
}
public static void main(String args[]){
launch(args);
}
}
İçinde start() yöntem, tipik bir JavaFX uygulaması oluşturmak için aşağıda verilen adımları izlemeniz gerekir -
Gerekli düğümlerle bir sahne grafiği hazırlayın.
Gerekli boyutlara sahip bir Sahne hazırlayın ve ona sahne grafiğini (sahne grafiğinin kök düğümü) ekleyin.
Bir sahne hazırlayın ve sahneyi sahneye ekleyin ve sahnenin içeriğini sergileyin.
Sahne Grafiğini Hazırlama
Uygulamanıza göre, gerekli düğümlerle bir sahne grafiği hazırlamanız gerekir. Kök düğüm ilk düğüm olduğundan, bir kök düğüm oluşturmanız gerekir. Kök düğüm olarak aşağıdakilerden birini seçebilirsiniz:Group, Region or WebView.
Group - Bir Grup düğümü, adlı sınıfla temsil edilir Group hangisi pakete ait javafx.scene, aşağıda gösterildiği gibi bu sınıfı başlatarak bir Grup düğümü oluşturabilirsiniz.
Group root = new Group();
getChildren() yöntemi Group sınıf size bir nesneyi verir ObservableListdüğümleri tutan sınıf. Aşağıda gösterildiği gibi bu nesneyi alıp ona düğüm ekleyebiliriz.
//Retrieving the observable list object
ObservableList list = root.getChildren();
//Setting the text object as a node
list.add(NodeObject);
Gruba Düğüm nesneleri de ekleyebiliriz, sadece onları Group aşağıda gösterildiği gibi, örnekleme sırasında sınıfına ve kurucusuna.
Group root = new Group(NodeObject);
Region - Tüm JavaFX Düğüm tabanlı UI Kontrollerinin Temel sınıfıdır, örneğin -
Chart - Bu sınıf, tüm çizelgelerin temel sınıfıdır ve pakete aittir. javafx.scene.chart.
Bu sınıfın iki alt sınıfı vardır: PieChart ve XYChart. Bu ikisinin de aşağıdaki gibi alt sınıfları vardır:AreaChart, BarChart, BubbleChartJavaFX'te farklı türlerde XY-Düzlem Grafikleri çizmek için kullanılır.
Bu sınıfları, uygulamanıza grafikler yerleştirmek için kullanabilirsiniz.
Pane - Bölme, aşağıdaki gibi tüm düzen bölmelerinin temel sınıfıdır: AnchorPane, BorderPane, DialogPane, vb. Bu sınıf, - javafx.scene.layout.
Bu sınıfları, uygulamanıza önceden tanımlanmış düzenler eklemek için kullanabilirsiniz.
Control - Kullanıcı Arayüzü kontrollerinin temel sınıfıdır. Accordion, ButtonBar, ChoiceBox, ComboBoxBase, HTMLEditor, etc. This class belongs to the package javafx.scene.control.
Uygulamanıza çeşitli UI öğeleri eklemek için bu sınıfları kullanabilirsiniz.
Bir Grupta, aşağıdaki programda gösterildiği gibi, yukarıda belirtilen sınıflardan herhangi birini başlatabilir ve bunları kök düğümler olarak kullanabilirsiniz.
//Creating a Stack Pane
StackPane pane = new StackPane();
//Adding text area to the pane
ObservableList list = pane.getChildren();
list.add(NodeObject);
WebView - Bu düğüm web motorunu yönetir ve içeriğini görüntüler.
Aşağıda, JavaFX'in düğüm sınıfı hiyerarşisini temsil eden bir diyagram bulunmaktadır.
Sahneyi Hazırlama
Bir JavaFX sahnesi şu şekilde temsil edilir: Scene paketin sınıfı javafx.scene. Aşağıdaki kod bloğunda gösterildiği gibi bu sınıfı örnekleyerek bir Sahne oluşturabilirsiniz.
Örnekleme yapılırken, kök nesnenin sahne sınıfının yapıcısına iletilmesi zorunludur.
Scene scene = new Scene(root);
Ayrıca, aşağıda gösterildiği gibi, sahnenin yüksekliğini ve genişliğini temsil eden iki çift tip parametresi de iletebilirsiniz.
Scene scene = new Scene(root, 600, 300);
Sahneyi Hazırlama
Bu, herhangi bir JavaFX uygulamasının kapsayıcısıdır ve uygulama için bir pencere sağlar. Tarafından temsil edilirStage paketin sınıfı javafx.stage. Bu sınıfın bir nesnesi,start() yöntemi Application sınıf.
Bu nesneyi kullanarak sahne üzerinde çeşitli işlemleri gerçekleştirebilirsiniz. Öncelikle şunları yapabilirsiniz -
Yöntemi kullanarak sahne başlığını belirleyin setTitle().
Sahne nesnesini sahneye ekleyin. setScene() yöntem.
Kullanarak sahnenin içeriğini görüntüleyin. show() yöntemi aşağıda gösterildiği gibi.
//Setting the title to Stage.
primaryStage.setTitle("Sample application");
//Setting the scene to Stage
primaryStage.setScene(scene);
//Displaying the stage
primaryStage.show();
JavaFX Uygulamasının Yaşam Döngüsü
JavaFX Application sınıfının üç yaşam döngüsü yöntemi vardır:
start() - JavaFX grafik kodunun yazılacağı giriş noktası yöntemi.
stop() - Geçersiz kılınabilen boş bir yöntem, burada uygulamayı durdurmak için mantığı yazabilirsiniz.
init() - Geçersiz kılınabilen boş bir yöntem, ancak bu yöntemde sahne veya sahne oluşturamazsınız.
Bunlara ek olarak, adında statik bir yöntem sağlar. launch() JavaFX uygulamasını başlatmak için.
Beri launch()yöntem statiktir, onu statik bir bağlamdan çağırmanız gerekir (genellikle ana). Bir JavaFX uygulaması başlatıldığında, aşağıdaki eylemler gerçekleştirilecektir (aynı sırayla).
Uygulama sınıfının bir örneği oluşturulur.
Init() yöntem denir.
start() yöntem denir.
Başlatıcı, uygulamanın bitmesini bekler ve stop() yöntem.
JavaFX Uygulamasının Sonlandırılması
Uygulamanın son penceresi kapatıldığında, JavaFX uygulaması örtük olarak sonlandırılır. Boole değerini "False" statik yönteme ileterek bu davranışı kapatabilirsiniz. setImplicitExit() (statik bir bağlamdan çağrılmalıdır).
Yöntemleri kullanarak bir JavaFX uygulamasını açıkça sonlandırabilirsiniz Platform.exit() veya System.exit(int).
Örnek 1 - Boş Pencere Oluşturma
Bu bölüm size boş bir pencere görüntüleyen bir JavaFX örnek uygulamasının nasıl oluşturulacağını öğretir. Adımlar aşağıdadır -
Adım 1: Bir Sınıf Oluşturma
Bir Java sınıfı oluşturun ve Application paketin sınıfı javafx.application ve bu sınıfın start () yöntemini aşağıdaki gibi uygulayın.
public class JavafxSample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Adım 2: Bir Grup Nesnesi Oluşturma
İçinde start() yöntem, pakete ait olan Group adlı sınıfı başlatarak bir grup nesnesi oluşturur javafx.scene, aşağıdaki gibi.
Group root = new Group();
3. Adım: Sahne Nesnesi Oluşturma
Adlı sınıfı örnekleyerek bir Sahne oluşturun Scene hangisi pakete ait javafx.scene. Bu sınıfa, Group nesnesini iletin(root), önceki adımda oluşturulmuştur.
Kök nesneye ek olarak, aşağıdaki gibi Group sınıfının nesnesiyle birlikte ekranın yüksekliğini ve genişliğini temsil eden iki çift parametre de iletebilirsiniz.
Scene scene = new Scene(root,600, 300);
4. Adım: Sahne Başlığını Belirleme
Şunu kullanarak başlığı sahneye ayarlayabilirsiniz. setTitle() yöntemi Stagesınıf. primaryStage parametre olarak sahne sınıfının başlangıç yöntemine iletilen bir Stage nesnesidir.
Kullanmak primaryStage nesne, sahnenin başlığını şu şekilde ayarlayın: Sample Application Aşağıda gösterildiği gibi.
primaryStage.setTitle("Sample Application");
Adım 5: Sahneye Sahne Ekleme
Yöntemi kullanarak sahneye bir Scene nesnesi ekleyebilirsiniz. setScene() sınıfın adı Stage. Bu yöntemi kullanarak önceki adımlarda hazırlanan Scene nesnesini aşağıda gösterildiği gibi ekleyin.
primaryStage.setScene(scene);
Adım 6: Sahne İçeriğinin Görüntülenmesi
Adlı yöntemi kullanarak sahnenin içeriğini görüntüleyin show() of Stage aşağıdaki gibi sınıf.
primaryStage.show();
7. Adım: Uygulamayı Başlatma
Statik yöntemi çağırarak JavaFX uygulamasını başlatın launch() of Application aşağıdaki gibi ana yöntemden sınıf.
public static void main(String args[]){
launch(args);
}
Misal
Aşağıdaki program boş bir JavaFX penceresi oluşturur. Bu kodu adıyla bir dosyaya kaydedinJavafxSample.java
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavafxSample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//creating a Group object
Group group = new Group();
//Creating a Scene by passing the group object, height and width
Scene scene = new Scene(group ,600, 300);
//setting color to the scene
scene.setFill(Color.BROWN);
//Setting the title to Stage.
primaryStage.setTitle("Sample Application");
//Adding the scene to Stage
primaryStage.setScene(scene);
//Displaying the contents of the stage
primaryStage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac JavafxSample.java
java JavafxSample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Örnek 2 - Düz Bir Çizgi Çizmek
Önceki örnekte, boş bir aşamanın nasıl oluşturulacağını gördük, şimdi bu örnekte JavaFX kütüphanesini kullanarak düz bir çizgi çizmeyi deneyelim.
Adımlar aşağıdadır -
Adım 1: Bir Sınıf Oluşturma
Bir Java sınıfı oluşturun ve Application paketin sınıfı javafx.application ve uygulayın start() bu sınıfın yöntemi aşağıdaki gibidir.
public class DrawingLine extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Adım 2: Bir Çizgi Oluşturma
JavaFX'te bir satır oluşturabilirsiniz. Line bir pakete ait olan javafx.scene.shape, bu sınıfı aşağıdaki gibi somutlaştırın.
//Creating a line object
Line line = new Line();
3. Adım: Özellikleri Satıra Ayarlama
Özellikleri ayarlayarak bir XY düzleminde çizgi çizmek için koordinatları belirtin. startX, startY, endX ve endY, aşağıdaki kod bloğunda gösterildiği gibi ilgili ayarlayıcı yöntemlerini kullanarak.
line.setStartX(100.0);
line.setStartY(150.0);
line.setEndX(500.0);
line.setEndY(150.0);
Adım 4: Bir Grup Nesnesi Oluşturma
Start () yönteminde, javafx.scene paketine ait olan Group adlı sınıfı başlatarak bir grup nesnesi oluşturun.
Bir önceki adımda oluşturulan Line (node) nesnesini, aşağıdaki gibi gruba eklemek için Group sınıfının yapıcısına parametre olarak iletin -
Group root = new Group(line);
Adım 5: Bir Sahne Nesnesi Oluşturma
Adlı sınıfı örnekleyerek bir Sahne oluşturun Scene hangisi pakete ait javafx.scene. Bu sınıfa, Group nesnesini iletin(root) önceki adımda oluşturulmuş.
Kök nesneye ek olarak, aşağıdaki gibi Group sınıfının nesnesiyle birlikte ekranın yüksekliğini ve genişliğini temsil eden iki çift parametre de iletebilirsiniz.
Scene scene = new Scene(group ,600, 300);
Adım 6: Sahne Başlığını Belirleme
Şunu kullanarak başlığı sahneye ayarlayabilirsiniz. setTitle() yöntemi Stagesınıf. primaryStage parametre olarak sahne sınıfının başlangıç yöntemine iletilen bir Stage nesnesidir.
Kullanmak primaryStage nesne, sahnenin başlığını şu şekilde ayarlayın: Sample Application aşağıdaki gibi.
primaryStage.setTitle("Sample Application");
7. Adım: Sahneye Sahne Ekleme
Yöntemi kullanarak sahneye bir Scene nesnesi ekleyebilirsiniz. setScene() sınıfın adı Stage. Bu yöntemi kullanarak önceki adımlarda hazırlanan Scene nesnesini aşağıdaki gibi ekleyin.
primaryStage.setScene(scene);
8. Adım: Sahne İçeriğinin Görüntülenmesi
Adlı yöntemi kullanarak sahnenin içeriğini görüntüleyin show() of Stage aşağıdaki gibi sınıf.
primaryStage.show();
Adım 9: Uygulamayı Başlatma
Statik yöntemi çağırarak JavaFX uygulamasını başlatın launch() of Application aşağıdaki gibi ana yöntemden sınıf.
public static void main(String args[]){
launch(args);
}
Misal
Aşağıdaki program JavaFX kullanılarak nasıl düz bir çizgi oluşturulacağını göstermektedir. Bu kodu adıyla bir dosyaya kaydedinJavafxSample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
public class DrawingLine extends Application{
@Override
public void start(Stage stage) {
//Creating a line object
Line line = new Line();
//Setting the properties to a line
line.setStartX(100.0);
line.setStartY(150.0);
line.setEndX(500.0);
line.setEndY(150.0);
//Creating a Group
Group root = new Group(line);
//Creating a Scene
Scene scene = new Scene(root, 600, 300);
//Setting title to the scene
stage.setTitle("Sample application");
//Adding the scene to the stage
stage.setScene(scene);
//Displaying the contents of a scene
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac DrawingLine.java
java DrawingLine
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi düz bir çizgi görüntüleyen bir JavaFX penceresi oluşturur.
Örnek 3 - Metnin Görüntülenmesi
Ayrıca JavaFX sahnesine metin de yerleştirebiliriz. Bu örnek, JavaFX'te metnin nasıl gömüleceğini gösterir.
Adımlar aşağıdadır -
Adım 1: Bir Sınıf Oluşturma
Bir Java Sınıfı oluşturun ve Application paketin sınıfı javafx.application ve uygulayın start() bu sınıfın yöntemi aşağıdaki gibidir.
public class DrawingLine extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Adım 2: Metni Gömme
Adlı sınıfı örnekleyerek bir JavaFX sahnesine metin gömebilirsiniz. Text bir pakete ait olan javafx.scene.shape, bu sınıfı somutlaştırın.
Bu sınıfı gömülecek metni String formatında ileterek başlatabilirsiniz Veya, aşağıda gösterildiği gibi varsayılan kurucuyu kullanarak metin nesnesi oluşturabilirsiniz.
//Creating a Text object
Text text = new Text();
3. Adım: Yazı Tipini Ayarlama
Metni kullanarak yazı tipini ayarlayabilirsiniz. setFont() yöntemi Textsınıf. Bu yöntem, bir font nesnesini parametre olarak kabul eder. Verilen metnin yazı tipini aşağıda gösterildiği gibi 45 olarak ayarlayın.
//Setting font to the text
text.setFont(new Font(45));
Adım 4: Metnin Konumunu Ayarlama
İlgili ayarlayıcı yöntemlerini kullanarak X, Y koordinatlarını ayarlayarak metnin XY düzlemindeki konumunu ayarlayabilirsiniz. setX() ve setY() aşağıdaki gibi.
//setting the position of the text
text.setX(50);
text.setY(150);
Adım 5: Eklenecek metni ayarlama
Text sınıfının setText () yöntemini kullanarak eklenecek metni ayarlayabilirsiniz. Bu yöntem, eklenecek metni temsil eden bir dize parametresi kabul eder.
text.setText("Welcome to Tutorialspoint");
Adım 6: Bir Grup Nesnesi Oluşturma
İçinde start() yönteminde, pakete ait olan Group adlı sınıfı başlatarak bir grup nesnesi oluşturun javafx.scene.
Bir önceki adımda oluşturulan Text (node) nesnesini, aşağıdaki gibi gruba eklemek için Group sınıfının yapıcısına parametre olarak iletin -
Group root = new Group(text)
7. Adım: Bir Sahne Nesnesi Oluşturma
Adlı sınıfı örnekleyerek bir Sahne oluşturun Scene hangisi pakete ait javafx.scene. Bu sınıfa, Group nesnesini iletin(root), önceki adımda oluşturulmuştur.
Kök nesneye ek olarak, aşağıdaki gibi Group sınıfının nesnesiyle birlikte ekranın yüksekliğini ve genişliğini temsil eden iki çift parametre de iletebilirsiniz.
Scene scene = new Scene(group ,600, 300);
Adım 8: Sahne Başlığını Belirleme
Şunu kullanarak başlığı sahneye ayarlayabilirsiniz. setTitle() yöntemi Stagesınıf. primaryStage parametre olarak sahne sınıfının başlangıç yöntemine iletilen bir Stage nesnesidir.
Kullanmak primaryStage nesne, sahnenin başlığını şu şekilde ayarlayın: Sample Application Aşağıda gösterildiği gibi.
primaryStage.setTitle("Sample Application");
Adım 9: Sahneye Sahne Ekleme
Yöntemi kullanarak sahneye bir Scene nesnesi ekleyebilirsiniz. setScene() sınıfın adı Stage. Bu yöntemi kullanarak önceki adımlarda hazırlanan Scene nesnesini aşağıdaki gibi ekleyin.
primaryStage.setScene(scene);
Adım 10: Sahne İçeriğinin Görüntülenmesi
Adlı yöntemi kullanarak sahnenin içeriğini görüntüleyin show() of Stage aşağıdaki gibi sınıf.
primaryStage.show();
Adım 11: Uygulamayı Başlatma
Statik yöntemi çağırarak JavaFX uygulamasını başlatın launch() of Application aşağıdaki gibi ana yöntemden sınıf.
public static void main(String args[]){
launch(args);
}
Misal
JavaFX kullanarak metin görüntüleme programı aşağıdadır. Bu kodu adıyla bir dosyaya kaydedinDisplayingText.java.
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class DisplayingText extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting font to the text
text.setFont(new Font(45));
//setting the position of the text
text.setX(50);
text.setY(150);
//Setting the text to be added.
text.setText("Welcome to Tutorialspoint");
//Creating a Group object
Group root = new Group();
//Retrieving the observable list object
ObservableList list = root.getChildren();
//Setting the text object as a node to the group object
list.add(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Sample Application");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac DisplayingText.java
java DisplayingText
Yürütüldüğünde, yukarıdaki program, aşağıda gösterildiği gibi metni görüntüleyen bir JavaFX penceresi oluşturur.
Önceki bölümde, JavaFX'in temel uygulamasını gördük, burada boş bir pencerenin nasıl oluşturulacağını ve JavaFX'in XY düzleminde nasıl çizgi çizileceğini öğrendik. Çizgiye ek olarak, birkaç başka 2D şekil de çizebiliriz.
2D Şekil
Genel olarak bir 2B şekil, XY düzleminde çizilebilen geometrik bir şekildir; bunlar Çizgi, Dikdörtgen, Daire vb. İçerir.
JavaFX kitaplığını kullanarak çizim yapabilirsiniz -
Çizgi, Dikdörtgen, Daire, Elips, Çokgen, Çoklu Çizgi, Kübik Eğri, Dörtlü Eğri, Yay gibi önceden tanımlanmış şekiller.
MoveTO Path Elemanı, Line, Horizontal Line, Vertical Line, Cubic Curve, Quadratic Curve, Arc gibi Yol elemanları.
Bunlara ek olarak, SVG yolunu ayrıştırarak da bir 2D şekil çizebilirsiniz.
Yukarıda belirtilen 2D şekillerin her biri bir sınıfla temsil edilir ve tüm bu sınıflar pakete aittir. javafx.scene.shape. Adlı sınıfShape JavaFX'teki tüm 2 Boyutlu şekillerin temel sınıfıdır.
2B Şekil Oluşturma
Bir grafik oluşturmak için yapmanız gerekenler -
- Gerekli şeklin ilgili sınıfını somutlaştırın.
- Şeklin özelliklerini ayarlayın.
- Şekil nesnesini gruba ekleyin.
İlgili Sınıfın Örneklenmesi
2 Boyutlu bir şekil oluşturmak için öncelikle ilgili sınıfını somutlaştırmanız gerekir.
Örneğin, bir çizgi oluşturmak istiyorsanız, aşağıdaki gibi Line adlı sınıfı başlatmanız gerekir -
Line line = new Line();
Şeklin Özelliklerini Ayarlama
Sınıfı başlattıktan sonra, ayarlayıcı yöntemlerini kullanarak şeklin özelliklerini ayarlamanız gerekir.
Örneğin, bir çizgi çizmek için çizginin başlangıç ve bitiş noktalarının x ve y koordinatlarını iletmeniz gerekir. Bu değerleri, ilgili ayarlayıcı yöntemlerini kullanarak aşağıdaki gibi belirtebilirsiniz -
//Setting the Properties of the Line
line.setStartX(150.0f);
line.setStartY(140.0f);
line.setEndX(450.0f);
line.setEndY(140.0f);
Şekil Nesnesini Gruba Ekleme
Son olarak, şeklin nesnesini aşağıda gösterildiği gibi kurucunun bir parametresi olarak ileterek gruba eklemeniz gerekir.
//Creating a Group object
Group root = new Group(line);
Aşağıdaki tablo size JavaFX tarafından sağlanan çeşitli şekillerin (sınıfların) listesini verir.
S.No | Şekil ve Açıklama |
---|---|
1 | Hat Çizgi, iki noktayı birleştiren geometrik bir yapıdır. Line paketin sınıfı javafx.scene.shape XY düzlemindeki bir çizgiyi temsil eder. |
2 | Dikdörtgen Genel olarak, bir dikdörtgen, tüm iç açıları dik açı olarak olan iki çift paralel ve eşzamanlı kenara sahip dört kenarlı bir çokgendir. JavaFX'te, Dikdörtgen, adında bir sınıfla temsil edilir.Rectangle. Bu sınıf pakete aittirjavafx.scene.shape. |
3 | Yuvarlarılmış dikdörtgen JavaFX'te, keskin kenarlı veya kemerli kenarlı bir dikdörtgen çizebilirsiniz ve kemerli kenarlı dikdörtgen, yuvarlatılmış dikdörtgen olarak bilinir. |
4 | Daire Daire, her noktası bir merkez noktasından sabit bir uzaklıkta olan kapalı bir döngü oluşturan bir çizgidir. JavaFX'te bir daire, adında bir sınıfla temsil edilir.Circle. Bu sınıf pakete aittirjavafx.scene.shape. |
5 | Elips Elips, her biri odak olarak adlandırılan iki nokta ile tanımlanır. Elips üzerinde herhangi bir nokta alınırsa, odak noktalarına olan mesafelerin toplamı sabittir. Elipsin boyutu, bu iki mesafenin toplamı ile belirlenir. JavaFX'te bir elips, adlı bir sınıfla temsil edilir. Ellipse. Bu sınıf pakete aittirjavafx.scene.shape. |
6 | Çokgen Uçtan uca bağlanmış birkaç eş düzlemli çizgi bölümünden oluşan kapalı bir şekil. JavaFX'te bir çokgen, adlı bir sınıfla temsil edilirPolygon. Bu sınıf pakete aittirjavafx.scene.shape. |
7 | Çoklu çizgi Bir çoklu çizgi, sonunda bir çoklu çizginin kapalı olmaması dışında bir çokgendir. Veya bir veya daha fazla çizgi bölümünden oluşan sürekli çizgi. JavaFX'te, Polyline adlı bir sınıfla temsil edilir.Polygon. Bu sınıf pakete aittirjavafx.scene.shape. |
8 | Kübik Eğri Kübik eğri, XY düzlemindeki Bezier parametrik eğrisidir. Derece 3 eğrisidir. JavaFX'te Kübik Eğri, adlı bir sınıfla temsil edilir. CubicCurve. Bu sınıf pakete aittirjavafx.scene.shape. |
9 | QuadCurve İkinci dereceden bir eğri, XY düzlemindeki bir Bezier parametrik eğrisidir. Derece 2'lik bir eğridir. JavaFX'te, bir QuadCurve, QuadCurve adlı bir sınıfla temsil edilir. Bu sınıf pakete aittirjavafx.scene.shape. |
10 | Ark Yay, bir eğrinin parçasıdır. JavaFX'te bir yay, adlı bir sınıfla temsil edilir.Arc. Bu sınıf pakete aittir -javafx.scene.shape. Ark TürleriBuna ek olarak üç tür yay çizebiliriz Open, Chord, Round. |
11 | SVGPath JavaFX'te, SVG yollarını ayrıştırarak görüntüler oluşturabiliriz. Bu tür şekiller, adlı sınıf tarafından temsil edilirSVGPath. Bu sınıf pakete aittirjavafx.scene.shape. Bu sınıfın adlı bir özelliği varcontentString veri türü. Bu, resmin çizilmesi gereken SVG Yolu kodlu dizesini temsil eder. |
Yol Sınıfı Üzerinden Daha Fazla Şekil Çizme
Önceki bölümde, sınıfları başlatarak ve ilgili parametreleri ayarlayarak önceden tanımlanmış basit şekillerin nasıl çizileceğini gördük.
Ancak, yalnızca bu önceden tanımlanmış şekiller, tarafından sağlanan ilkellerden başka daha karmaşık şekiller oluşturmak için yeterli değildir. javafx.shape package.
Örneğin, aşağıdaki diyagramda gösterildiği gibi bir grafik öğesi çizmek istiyorsanız, bu basit şekillere güvenemezsiniz.
Yol Sınıfı
JavaFX bu tür karmaşık yapıları çizmek için adlı bir sınıf sağlar Path. Bu sınıf, bir şeklin geometrik anahatlarını temsil eder.
Çeşitli bilgileri içeren gözlemlenebilir bir listeye eklenmiştir. Path Elements moveTo, LineTo, HlineTo, VlineTo, ArcTo, QuadCurveTo, CubicCurveTo gibi.
Örnekleme sırasında bu sınıf, verilen yol öğelerine göre bir yol oluşturur.
Yol öğelerini bu sınıfa aşağıdaki gibi somutlaştırırken iletebilirsiniz−
Path myshape = new Path(pathElement1, pathElement2, pathElement3);
Ya da gözlemlenebilir listeyi alabilir ve tüm yol öğelerini kullanarak ekleyebilirsiniz. addAll() yöntem aşağıdaki gibidir -
Path myshape = new Path();
myshape.getElements().addAll(pathElement1, pathElement2, pathElement3);
Add () yöntemini kullanarak öğeleri tek tek de ekleyebilirsiniz -
Path myshape = new Path();
myshape.getElements().add(pathElement1);
Yola Taşı Öğesi
Yol Öğesi MoveToyolun geçerli konumunu belirli bir noktaya taşımak için kullanılır. Genellikle yol öğeleri kullanılarak çizilen bir şeklin başlangıç noktasını ayarlamak için kullanılır.
Adlı bir sınıfla temsil edilir LineTo paketin javafx.scene.shape. Çift veri türünün 2 özelliği vardır:
X - Geçerli konumdan bir çizginin çizileceği noktanın x koordinatı.
Y - Geçerli konumdan bir çizginin çizileceği noktanın y koordinatı.
MoveTo sınıfını örnekleyerek ve yeni noktanın x, y koordinatlarını aşağıdaki gibi ileterek yol öğesine bir hareket oluşturabilirsiniz -
MoveTo moveTo = new MoveTo(x, y);
Kurucuya herhangi bir değer iletmezseniz, yeni nokta (0,0) olarak ayarlanacaktır.
Aşağıdaki gibi ilgili ayarlayıcı yöntemlerini kullanarak değerleri x, y koordinatına da ayarlayabilirsiniz -
setX(value);
setY(value);
Örnek - Karmaşık Bir Yol Çizme
Bu örnekte, aşağıdaki şeklin nasıl çizileceğini göstereceğiz. Path, MoveTo ve Line sınıflar.
Bu kodu adıyla bir dosyaya kaydedin ComplexShape.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
public class ComplexShape extends Application {
@Override
public void start(Stage stage) {
//Creating a Path
Path path = new Path();
//Moving to the starting point
MoveTo moveTo = new MoveTo(108, 71);
//Creating 1st line
LineTo line1 = new LineTo(321, 161);
//Creating 2nd line
LineTo line2 = new LineTo(126,232);
//Creating 3rd line
LineTo line3 = new LineTo(232,52);
//Creating 4th line
LineTo line4 = new LineTo(269, 250);
//Creating 4th line
LineTo line5 = new LineTo(108, 71);
//Adding all the elements to the path
path.getElements().add(moveTo);
path.getElements().addAll(line1, line2, line3, line4, line5);
//Creating a Group object
Group root = new Group(path);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing an arc through a path");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac ComplexShape.java
java ComplexShape
Yürütüldüğünde, yukarıdaki program, aşağıda gösterildiği gibi geçerli konumdan belirtilen noktaya çizilen bir yayı görüntüleyen bir JavaFX penceresi oluşturur.
Aşağıda, JavaFX tarafından sağlanan çeşitli yol öğeleri (sınıflar) verilmiştir. Bu sınıflar pakette varjavafx.shape. Tüm bu sınıflar sınıfı miras alırPathElement.
S.No | Şekil ve Açıklama |
---|---|
1 | LineTo Yol öğesi linegeçerli konumdan belirtilen koordinatlarda bir noktaya düz bir çizgi çizmek için kullanılır. Adlı bir sınıfla temsil edilirLineTo. Bu sınıf pakete aittirjavafx.scene.shape. |
2 | HlineTo Yol öğesi HLineTogeçerli konumdan belirtilen koordinatlarda bir noktaya yatay bir çizgi çizmek için kullanılır. Adlı bir sınıfla temsil edilirHLineTo. Bu sınıf pakete aittirjavafx.scene.shape. |
3 | VLineTo Yol öğesi vertical linegeçerli konumdan belirtilen koordinatlarda bir noktaya dikey bir çizgi çizmek için kullanılır. Adlı bir sınıfla temsil edilirVLineTo. Bu sınıf pakete aittirjavafx.scene.shape. |
4 | QuadCurveTo Yol elemanı ikinci dereceden eğri, bir quadratic curvemevcut konumdan belirtilen koordinatlarda bir noktaya. Adlı bir sınıfla temsil edilirQuadraticCurveTo. Bu sınıf pakete aittirjavafx.scene.shape. |
5 | CubicCurveTo Yol öğesi cubic curvegeçerli konumdan belirtilen koordinatlarda bir noktaya kübik bir eğri çizmek için kullanılır. Adlı bir sınıfla temsil edilirCubicCurveTo. Bu sınıf pakete aittirjavafx.scene.shape. |
6 | ArcTo Yol öğesi Arcgeçerli konumdan belirtilen koordinatlarda bir noktaya yay çizmek için kullanılır. Adlı bir sınıfla temsil edilirArcTo. Bu sınıf pakete aittirjavafx.scene.shape. |
2D Nesnelerin Özellikleri
Tüm 2 Boyutlu nesneler için, dolgu, kontur, StrokeType, vb. Gibi çeşitli özellikleri ayarlayabilirsiniz. Aşağıdaki bölümde 2B nesnelerin çeşitli özellikleri anlatılmaktadır.
- İnme Tipi
- Darbe genişliği
- Kontur Dolgusu
- Stroke
- İnme Hattı
- Kontur Gönye Sınırı
- İnme Hattı Başlığı
- Smooth
2B Nesnelerde İşlemler
Bir gruba birden fazla şekil eklersek, aşağıda gösterildiği gibi birinci şekil ikinci şekil ile örtüşür.
Dönüşümlere (döndürme, ölçekleme, çevirme vb.), Geçişlere (animasyonlar) ek olarak, 2D nesneler üzerinde üç işlem de gerçekleştirebilirsiniz: Union, Subtraction ve Intersection.
S.No | Operasyon Açıklaması |
---|---|
1 | Sendika Operasyonu Bu işlem, girdi olarak iki veya daha fazla şekil alır ve bunların işgal ettiği alanı döndürür. |
2 | Kavşak Operasyonu Bu işlem, girdi olarak iki veya daha fazla şekil alır ve aralarındaki kesişme alanını döndürür. |
3 | Çıkarma İşlemi Bu işlem, giriş olarak iki veya daha fazla şekil alır. Ardından, ikinci şeklin üst üste binen alanı hariç ilk şeklin alanını döndürür. |
Çeşitli şekiller gibi, JavaFX'te de bir metin düğümü oluşturabilirsiniz. Metin düğümü, adlı sınıf tarafından temsil edilir.Textpakete ait olan javafx.scene.text.
Bu sınıf, JavaFX'te metin oluşturmak ve görünümünü değiştirmek için çeşitli özellikler içerir. Bu sınıf ayrıca pakete ait olan Shape sınıfını da miras alır.javafx.scene.shape.
Bu nedenle, yazı tipi, hizalama, satır aralığı, metin vb. Gibi metnin özelliklerine ek olarak, ayrıca aşağıdaki gibi temel şekil düğümü özelliklerini de miras alır. strokeFill, stroke, strokeWidth, strokeType, vb.
Bir Metin Düğümü Oluşturma
Paketin sınıfından beri javafx.scene.text JavaFX'teki metin düğümünü temsil eder, bu sınıfı aşağıdaki gibi başlatarak bir metin oluşturabilirsiniz -
Text text = new Text();
Metin sınıfı, text Oluşturulacak metni temsil eden dize türü.
Text sınıfının örneğini oluşturduktan sonra, şunu kullanarak bu özelliğe değer ayarlamanız gerekir. setText() yöntemi aşağıda gösterildiği gibi.
String text = "Hello how are you"
Text.setText(text);
Ayrıca, ilgili ayarlayıcı yöntemlerini kullanarak x ve y özelliklerinin değerlerini belirleyerek metnin konumunu (başlangıç noktasını) ayarlayabilirsiniz. setX() ve setY() aşağıdaki kod bloğunda gösterildiği gibi -
text.setX(50);
text.setY(50);
Misal
Aşağıdaki program, JavaFX'te bir metin düğümünün nasıl oluşturulacağını gösteren bir örnektir. Bu kodu adıyla bir dosyaya kaydedinTextExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Text;
public class TextExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting the text to be added.
text.setText("Hello how are you");
//setting the position of the text
text.setX(50);
text.setY(50);
//Creating a Group object
Group root = new Group(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Sample Application");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac TextExample.java
java TextExample
Yürütüldüğünde, yukarıdaki program, belirtilen metni aşağıdaki gibi görüntüleyen bir JavaFX penceresi oluşturur -
Metnin Konumu ve Yazı Tipi
Varsayılan olarak, metin sınıfı tarafından oluşturulan metin yazı tipi…, boyut… ve siyah renktedir.
Metnin yazı tipi boyutunu ve rengini değiştirmek için setFont()yöntem. Bu yöntem, bir nesneyi kabul eder.Font sınıf.
Adlı sınıf Font paketin javafx.scene.textmetnin yazı tipini tanımlamak için kullanılır. Bu sınıf, adında statik bir yöntem içerirfont().
Bu yöntem şu dört parametreyi kabul eder -
family - Bu bir String tipindedir ve metne uygulamak istediğimiz yazı tipi ailesini temsil eder.
weight- Bu özellik, yazı tipinin ağırlığını temsil eder. 9 değeri kabul eder, bunlar -FontWeight.BLACK, FontWeight.BOLD, FontWeight.EXTRA_BOLD, FontWeight.EXTRA_LIGHT, LIGHT, MEDIUM, NORMAL, SEMI_BOLD, THIN.
posture- Bu özellik yazı tipi duruşunu temsil eder (normal veya italik). İki değeri kabul ederFontPosture.REGULAR ve FontPosture.ITALIC.
size - Bu özellik double türündedir ve yazı tipinin boyutunu temsil eder.
Aşağıdaki yöntemi kullanarak yazı tipini metne ayarlayabilirsiniz -
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
Misal
Aşağıdaki program, JavaFX'te metin düğümünün yazı tipinin nasıl ayarlanacağını gösteren bir örnektir. Burada yazı tipini Verdana, ağırlığı kalın, duruşu normal ve boyutu 20 olarak ayarlıyoruz.
Bu kodu adıyla bir dosyaya kaydedin TextFontExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class TextFontExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting font to the text
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
//setting the position of the text
text.setX(50);
text.setY(130);
//Setting the text to be added.
text.setText("Hi how are you");
//Creating a Group object
Group root = new Group(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Setting Font to the text");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac TextFontExample.java
java TextFontExample
Yürütüldüğünde, yukarıdaki program, metni belirtilen yazı tipiyle aşağıdaki gibi görüntüleyen bir JavaFX penceresi oluşturur -
Vuruş ve Renk
Text sınıfı ayrıca paketin Shape sınıfını da miras alır. Bu nedenle kullanabilirsinizjavafx.scene.shape kontur ve rengi metin düğümüne de ayarlayabilirsiniz.
Kullanarak metne rengi ayarlayabilirsiniz. setFill() şekil (miras alınan) sınıfının yöntemi aşağıdaki gibidir -
text.setFill(Color.BEIGE);
Benzer şekilde, yöntemi kullanarak metnin kontur rengini ayarlayabilirsiniz. setStroke(). Yöntem kullanılarak vuruş genişliği ayarlanabilirkensetStrokeWidth() aşağıdaki gibi -
//Setting the color
text.setFill(Color.BROWN);
//Setting the Stroke
text.setStrokeWidth(2);
//Setting the stroke color
text.setStroke(Color.BLUE);
Misal
Aşağıdaki program, metin düğümünün renginin, strok Genişliğinin ve strokColor'unun nasıl ayarlanacağını gösteren bir örnektir. Bu kodda, kontur rengini - mavi, metin rengini - kahverengi ve kontur genişliğini - 2 olarak ayarlıyoruz.
Bu kodu adıyla bir dosyaya kaydedin StrokeExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class StrokeExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting font to the text
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 50));
//setting the position of the text
text.setX(50);
text.setY(130);
//Setting the color
text.setFill(Color.BROWN);
//Setting the Stroke
text.setStrokeWidth(2);
// Setting the stroke color
text.setStroke(Color.BLUE);
//Setting the text to be added.
text.setText("Hi how are you");
//Creating a Group object
Group root = new Group(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Setting font to the text");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac StrokeExample.java
java StrokeExample
Yürütüldüğünde, yukarıdaki program, metni belirtilen vuruş ve renk nitelikleriyle aşağıdaki gibi görüntüleyen bir JavaFX penceresi oluşturur -
Metne Dekorasyon Uygulama
Üstü çizili gibi süslemeler de uygulayabilirsiniz; bu durumda metinden bir satır geçilir. Yöntemlerini kullanarak bir metnin altını çizebilirsiniz.Text sınıf.
Yöntemi kullanarak metnin üstünü çizebilirsiniz setStrikethrough(). Bu bir Boolean değerini kabul eder, değeri iletirtrue aşağıdaki kod kutusunda gösterildiği gibi metnin üstünü çizmek için bu yönteme -
//Striking through the text
text1.setStrikethrough(true);
Aynı şekilde, değerini ileterek bir metnin altını çizebilirsiniz. true yönteme setUnderLine() aşağıdaki gibi -
//underlining the text
text2.setUnderline(true);
Misal
Aşağıdaki program, aşağıdaki gibi dekorasyonların nasıl uygulanacağını gösteren bir örnektir. underline veya strike throughbir metne. Bu kodu adıyla bir dosyaya kaydedinDecorationsExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class DecorationsExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text_Example object
Text text1 = new Text("Hi how are you");
//Setting font to the text
text1.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
//setting the position of the text
text1.setX(50);
text1.setY(75);
//Striking through the text
text1.setStrikethrough(true);
//Creating a Text_Example object
Text text2 = new Text("Welcome to Tutorialspoint");
//Setting font to the text
text2.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
//setting the position of the text
text2.setX(50);
text2.setY(150);
//underlining the text
text2.setUnderline(true);
//Creating a Group object
Group root = new Group(text1, text2);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Decorations Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac DecorationsExample.java
java DecorationsExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur -
Efekt, grafiklerin görünümünü geliştiren herhangi bir eylemdir. JavaFX'te efekt, görünümlerini görsel olarak geliştirmek için düğümlere uygulanan bir algoritmadır. Etki özelliğiNode sınıfı, efekti belirtmek için kullanılır.
JavaFX'te, aşağıdaki gibi bir düğüme çeşitli efektler ayarlayabilirsiniz: bloom, blur ve glow. Bu efektlerin her biri bir sınıfla temsil edilir ve tüm bu sınıflar adlı bir pakette mevcuttur.javafx.scene.effect.
Bir Düğüme Efekt Uygulama
Kullanarak bir düğüme efekt uygulayabilirsiniz. setEffect()yöntem. Bu yönteme, efektin nesnesini iletmeniz gerekir.
Bir düğüme efekt uygulamak için yapmanız gerekenler -
Düğümü oluşturun.
Uygulanması gereken ilgili efekt sınıfını somutlaştırın.
Efektin özelliklerini ayarlayın.
Efekti kullanarak düğüme uygulayın. setEffect() yöntem.
Düğümlerin Oluşturulması
Her şeyden önce, düğümleri bir JavaFX uygulamasında ilgili sınıflarını başlatarak oluşturun.
Örneğin, uygulamanızdaki bir görüntüye ışıma efekti uygulamak istiyorsanız. Öncelikle, Image sınıfını başlatarak bir görüntü düğümü oluşturmanız ve görünümünü aşağıda gösterildiği gibi ayarlamanız gerekir.
//Creating an image
Image image = new Image("https://www.tutorialspoint.com/green/images/logo.png");
//Setting the image view
ImageView imageView = new ImageView(image);
//Setting the position of the image
imageView.setX(100);
imageView.setY(70);
//setting the fit height and width of the image view
imageView.setFitHeight(200);
imageView.setFitWidth(400);
//Setting the preserve ratio of the image view
imageView.setPreserveRatio(true);
İlgili Sınıfın Örneklenmesi
Oluşturulan düğüme uygulanması gereken etkiyi temsil eden sınıfı örnekleyin.
Örneğin - Işıma efektini uygulamak için, Glow aşağıdaki kod kutusunda gösterildiği gibi sınıf -
Glow glow = new Glow();
Efektin Özelliklerini Ayarlama
Sınıfı başlattıktan sonra, ayarlayıcı yöntemlerini kullanarak efektin özelliklerini ayarlamanız gerekir.
Örneğin - 3 Boyutlu bir kutu çizmek için genişliğini, yüksekliğini ve derinliğini geçmeniz gerekir. Bu değerleri, aşağıda gösterildiği gibi ilgili ayarlayıcı yöntemlerini kullanarak belirtebilirsiniz -
//setting the level property
glow.setLevel(0.9);
Düğüme Efekt Ekleme
Son olarak, gerekli efekti düğüme uygulayabilirsiniz. setEffect()yöntem. Örneğin: Parlama efektini görüntü düğümüne ayarlamak için, Glow sınıfının nesnesini bu yönteme aşağıdaki gibi iletmeniz gerekir -
imageView.setEffect(glow);
JavaFX Effects- Aşağıdaki tablo size JavaFX tarafından sağlanan çeşitli efektlerin (sınıfların) listesini verir. Bu sınıflar adlı pakette bulunurjavafx.scene.effect.
S.No | Şekil ve Açıklama |
---|---|
1 | Renk Ayarı Renk ayarlama efektini uygulayarak görüntünün rengini ayarlayabilirsiniz. Bu,hue, saturation, brightness ve contrast her pikselde Adlı sınıf ColorAdjust paketin javafx.scene.effect renk ayarlama efektini temsil eder. |
2 | Renkli Giriş Renkli Giriş Efekti, bir dikdörtgen çizmek ve onu renkle doldurmakla aynı çıktıyı verir. Diğer efektlerin aksine, bu efekt herhangi bir düğüme uygulanırsa, yalnızca dikdörtgen bir kutu görüntüler (düğümü değil). Bu efekt çoğunlukla diğer efektler için bir girdi olarak geçmek için kullanılır. Adlı sınıf ColorInput paketin javafx.scene.effect renk girişi efektini temsil eder. |
3 | Görüntü Girişi JavaFX'teki görüntü giriş efekti yalnızca JavaFX ekranına bir görüntü yerleştirir. Renk Giriş efekti gibi (Belirtilen renkli dikdörtgen bölgeyi başka bir efekte girdi olarak geçirmek için kullanılır), Görüntü Giriş efekti, belirtilen görüntüyü başka bir efekte girdi olarak geçirmek için kullanılır. Adlı sınıf ImageInput paketin javafx.scene.effect Görüntü Giriş efektini temsil eder. |
4 | Harman Genel olarak harman, iki veya daha fazla farklı şey veya maddenin karışımı anlamına gelir. Bu harmanlama efektini uygularsak, iki farklı girdinin piksellerini aynı konumda alır ve buna göre birleşik bir çıktı üretir.blend mode. Adlı sınıf Blend paketin javafx.scene.effect karışım etkisini temsil eder. |
5 | Çiçek açmak Çiçeklenme efekti uygulanırken, düğümün bazı bölümlerindeki pikseller parlatılır. Adlı sınıf Bloom paketin javafx.scene.effect çiçeklenme etkisini temsil eder. |
6 | Glow Çiçeklenme gibi, Parlama efekti de verilen giriş görüntüsünün parlamasını sağlar, bu efekt, girişin parlak piksellerini daha parlak hale getirir. Adlı sınıf Glow paketin javafx.scene.effect ışıma efektini temsil eder. |
7 | Kutu bulanıklığı Bu bulanıklık efektini bir düğüme uygularken netlik kazanmaz. Kutu bulanıklaştırma, JavaFX tarafından sağlanan bir tür bulanıklaştırma efektidir. Bu efektte, bir düğüme bulanıklık uyguladığımızda, basit bir kutu filtresi kullanılır. Adlı sınıf BoxBlur paketin javafx.scene.effect kutu bulanıklığı efektini temsil eder. |
8 | Gauss Bulanıklığı Tıpkı Box Blur Gaussian gibi, JavaFX'teki düğümleri bulanıklaştırma efekti. Tek farkGaussian Blur effect bulanıklaştırma efekti oluşturmak için bir Gauss evrişim çekirdeğinin kullanılmasıdır. Paketin GaussianBlur adlı sınıfı javafx.scene.effect Gauss Bulanıklığı efektini temsil eder. |
9 | Hareket bulanıklığı Gauss Etkileri gibi, Hareket Bulanıklığı da JavaFX'te düğümleri bulanıklaştıran bir efekttir. Ayrıca, bulanıklaştırma efekti oluşturmak için bir Gauss evrişim çekirdeği kullanır, ancak bu etkideki fark, Gauss evrişim çekirdeğinin belirli bir açıyla kullanılmasıdır. Adlı sınıf MotionBlur paketin javafx.scene.effect Hareket Bulanıklığı efektini temsil eder. |
10 | Yansıma Yansıma efektini JavaFX'te bir düğüme uygularken, düğümün altına bunun bir yansıması eklenir. Adlı sınıf Reflection paketin javafx.scene.effect yansıma etkisini temsil eder. |
11 | SepiaTone JavaFX'te (genel olarak görüntü) bir düğüme Sepya ton efekti uygulandığında, kırmızımsı kahverengi bir renkle tonlanır. Adlı sınıf SepiaTone paketin javafx.scene.effect sepya ton efektini temsil eder. |
12 | Gölge Bu efekt, belirtilen düğümün bulanık kenarları olan bir kopyasını oluşturur. Adlı sınıf Shadow paketin javafx.scene.effect sepya ton efektini temsil eder. |
13 | Düşen gölge Bu efekti bir düğüme uygularken, belirtilen düğümün arkasında bir gölge oluşturulacaktır. Adlı sınıf DropShadow paketin javafx.scene.effect alt gölge efektini temsil eder. |
14 | İç gölge Bu efekti bir düğüme uygularken, düğümün kenarlarının içinde bir gölge oluşturulacaktır. Adlı sınıf InnerShadow paketin javafx.scene.effect iç gölge efektini temsil eder. |
15 | Aydınlatma Işık efekti, bir ışık kaynağından gelen bir ışığı simüle etmek için kullanılır. Farklı türde ışık kaynakları vardır.point, distant ve spot. Adlı sınıf Lighting paketin javafx.scene.effect aydınlatma efektini temsil eder. |
16 | Hafif Dayanıklı Bu etkiyi bir düğüme uygularken, sanki uzak bir ışık kaynağı tarafından üretiliyormuş gibi üzerinde bir ışık simüle edilir. Distant Light Source- Düğümden uzaktaki bir kaynak. Burada ışık kaynaktan tek yönde azaltılır. Adlı sınıf Light.Distant paketin javafx.scene.effect uzaktaki ışık kaynağını temsil eder. |
17 | Light.Spot Bu efekt bir düğüme uygulandığında, sanki bir spot ışık tarafından üretiliyormuş gibi üzerinde bir ışık simüle edilir. Spot light Source- Bu kaynaktan gelen ışık her yönden zayıflıyor. Işığın yoğunluğu, nesnenin kaynaktan uzaklığına bağlıdır. Adlı sınıf Light.Spot paketin javafx.scene.effect uzaktaki ışık kaynağını temsil eder. |
18 | Point.Spot Bu efekti bir düğüme uygularken, sanki bir nokta ışık kaynağı tarafından üretiliyormuş gibi üzerinde bir ışık simüle edilir. Point Light Source- Bu kaynaktan gelen ışık tek bir noktadan tüm yönlere doğru zayıflar. Işığın yoğunluğu, nesnenin kaynaktan uzaklığına bağlıdır. Adlı sınıf Point.Spot javafx.scene.effect paketindeki nokta ışığı temsil eder. |
Dönüşüm, bazı grafikleri kurallar uygulayarak başka bir şeye dönüştürmek anlamına gelir. Gibi çeşitli dönüşüm türlerine sahip olabilirizTranslation, Scaling Up or Down, Rotation, Shearing, vb.
JavaFX kullanarak, döndürme, ölçekleme ve çevirme gibi düğümlere dönüşümler uygulayabilirsiniz. Tüm bu dönüşümler çeşitli sınıflarla temsil edilir ve bunlar pakete aittir.javafx.scene.transform.
S.No | Dönüşüm ve Açıklama |
---|---|
1 | Rotasyon Dönüşte nesneyi belirli bir açıyla döndürürüz θ (theta) kökeninden. |
2 | Ölçeklendirme Bir nesnenin boyutunu değiştirmek için ölçeklendirme dönüşümü kullanılır. |
3 | Tercüme Bir nesneyi ekranda farklı bir konuma taşır. |
4 | Kesme Bir nesnenin şeklini eğimli hale getiren dönüşüme Kesme Dönüşümü denir. |
Çoklu Dönüşümler
JavaFX'te düğümlere birden çok dönüşüm de uygulayabilirsiniz. Aşağıdaki program, aşağıdakileri gerçekleştiren bir örnektir:Rotation, Scaling ve Translation aynı anda bir dikdörtgende dönüşümler.
Bu kodu şu adla bir dosyaya kaydedin -
MultipleTransformationsExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Scale;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class MultipleTransformationsExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Rectangle
Rectangle rectangle = new Rectangle(50, 50, 100, 75);
//Setting the color of the rectangle
rectangle.setFill(Color.BURLYWOOD);
//Setting the stroke color of the rectangle
rectangle.setStroke(Color.BLACK);
//creating the rotation transformation
Rotate rotate = new Rotate();
//Setting the angle for the rotation
rotate.setAngle(20);
//Setting pivot points for the rotation
rotate.setPivotX(150);
rotate.setPivotY(225);
//Creating the scale transformation
Scale scale = new Scale();
//Setting the dimensions for the transformation
scale.setX(1.5);
scale.setY(1.5);
//Setting the pivot point for the transformation
scale.setPivotX(300);
scale.setPivotY(135);
//Creating the translation transformation
Translate translate = new Translate();
//Setting the X,Y,Z coordinates to apply the translation
translate.setX(250);
translate.setY(0);
translate.setZ(0);
//Adding all the transformations to the rectangle
rectangle.getTransforms().addAll(rotate, scale, translate);
//Creating a Group object
Group root = new Group(rectangle);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Multiple transformations");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac MultipleTransformationsExample.java
java MultipleTransformationsExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
3B Nesnelerdeki Dönüşümler
Ayrıca 3B nesnelere de dönüşüm uygulayabilirsiniz. Aşağıda 3 Boyutlu bir kutuyu döndüren ve çeviren bir örnek verilmiştir.
Bu kodu adıyla bir dosyaya kaydedin RotationExample3D.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class RotationExample3D extends Application {
@Override
public void start(Stage stage) {
//Drawing a Box
Box box = new Box();
//Setting the properties of the Box
box.setWidth(150.0);
box.setHeight(150.0);
box.setDepth(150.0);
//Creating the translation transformation
Translate translate = new Translate();
translate.setX(400);
translate.setY(150);
translate.setZ(25);
Rotate rxBox = new Rotate(0, 0, 0, 0, Rotate.X_AXIS);
Rotate ryBox = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS);
Rotate rzBox = new Rotate(0, 0, 0, 0, Rotate.Z_AXIS);
rxBox.setAngle(30);
ryBox.setAngle(50);
rzBox.setAngle(30);
box.getTransforms().addAll(translate,rxBox, ryBox, rzBox);
//Creating a Group object
Group root = new Group(box);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a cylinder");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac RotationExample3D.java
java RotationExample3D
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Genel olarak, bir nesneyi canlandırmak, hızlı görüntüleme ile hareketinin yanılsamasını yaratmayı gerektirir. JavaFX'te, özelliği zaman içinde değiştirilerek bir düğüm canlandırılabilir. JavaFX adlı bir paket sağlarjavafx.animation. Bu paket, düğümleri canlandırmak için kullanılan sınıfları içerir. Animasyon, tüm bu sınıfların temel sınıfıdır.
JavaFX kullanarak, aşağıdaki gibi animasyonlar (geçişler) uygulayabilirsiniz. Fade Transition, Fill Transition, Rotate Transition, Scale Transition, Stroke Transition, Translate Transition, Path Transition, Sequential Transition, Pause Transition, Parallel Transition, vb.
Tüm bu geçişler, paketteki ayrı sınıflarla temsil edilir. javafx.animation.
Bir düğüme belirli bir animasyon uygulamak için, aşağıda verilen adımları izlemelisiniz -
İlgili sınıfı kullanarak bir gerekli düğüm oluşturun.
Uygulanacak ilgili geçiş (animasyon) sınıfını örnekleyin
Geçişin özelliklerini ayarlayın ve
Sonunda geçişi kullanarak play() yöntemi Animation sınıf.
Bu bölümde temel geçişlerin (Döndürme, Ölçeklendirme, Çevirme) örneklerini tartışacağız.
Geçiş Döndürme
Aşağıda, JavaFX'te Döndürme Geçişini gösteren program yer almaktadır. Bu kodu adıyla bir dosyaya kaydedinRotateTransitionExample.java.
import javafx.animation.RotateTransition;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;
import javafx.util.Duration;
public class RotateTransitionExample extends Application {
@Override
public void start(Stage stage) {
//Creating a hexagon
Polygon hexagon = new Polygon();
//Adding coordinates to the hexagon
hexagon.getPoints().addAll(new Double[]{
200.0, 50.0,
400.0, 50.0,
450.0, 150.0,
400.0, 250.0,
200.0, 250.0,
150.0, 150.0,
});
//Setting the fill color for the hexagon
hexagon.setFill(Color.BLUE);
//Creating a rotate transition
RotateTransition rotateTransition = new RotateTransition();
//Setting the duration for the transition
rotateTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
rotateTransition.setNode(hexagon);
//Setting the angle of the rotation
rotateTransition.setByAngle(360);
//Setting the cycle count for the transition
rotateTransition.setCycleCount(50);
//Setting auto reverse value to false
rotateTransition.setAutoReverse(false);
//Playing the animation
rotateTransition.play();
//Creating a Group object
Group root = new Group(hexagon);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Rotate transition example ");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac RotateTransitionExample.java
java RotateTransitionExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Ölçek Geçişi
Aşağıda JavaFX'te Ölçek Geçişini gösteren program yer almaktadır. Bu kodu adıyla bir dosyaya kaydedinScaleTransitionExample.java.
import javafx.animation.ScaleTransition;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class ScaleTransitionExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the position of the circle
circle.setCenterX(300.0f);
circle.setCenterY(135.0f);
//Setting the radius of the circle
circle.setRadius(50.0f);
//Setting the color of the circle
circle.setFill(Color.BROWN);
//Setting the stroke width of the circle
circle.setStrokeWidth(20);
//Creating scale Transition
ScaleTransition scaleTransition = new ScaleTransition();
//Setting the duration for the transition
scaleTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
scaleTransition.setNode(circle);
//Setting the dimensions for scaling
scaleTransition.setByY(1.5);
scaleTransition.setByX(1.5);
//Setting the cycle count for the translation
scaleTransition.setCycleCount(50);
//Setting auto reverse value to true
scaleTransition.setAutoReverse(false);
//Playing the animation
scaleTransition.play();
//Creating a Group object
Group root = new Group(circle);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Scale transition example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac ScaleTransitionExample.java
java ScaleTransitionExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Transition'ı Çevir
Aşağıda, JavaFX'te Çeviri Geçişini gösteren program yer almaktadır. Bu kodu adıyla bir dosyaya kaydedinTranslateTransitionExample.java.
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TranslateTransitionExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the position of the circle
circle.setCenterX(150.0f);
circle.setCenterY(135.0f);
//Setting the radius of the circle
circle.setRadius(100.0f);
//Setting the color of the circle
circle.setFill(Color.BROWN);
//Setting the stroke width of the circle
circle.setStrokeWidth(20);
//Creating Translate Transition
TranslateTransition translateTransition = new TranslateTransition();
//Setting the duration of the transition
translateTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
translateTransition.setNode(circle);
//Setting the value of the transition along the x axis.
translateTransition.setByX(300);
//Setting the cycle count for the transition
translateTransition.setCycleCount(50);
//Setting auto reverse value to false
translateTransition.setAutoReverse(false);
//Playing the animation
translateTransition.play();
//Creating a Group object
Group root = new Group(circle);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Translate transition example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac TranslateTransitionExample.java
java TranslateTransitionExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Bunlara ek olarak, JavaFX, sınıfların düğümlere daha fazla geçiş uygulaması sağlar. Aşağıda JavaFX tarafından desteklenen diğer geçiş türleri verilmiştir.
Düğümlerin özelliklerini etkileyen geçişler Soldur, Doldur, Kontur
Birden fazla temel geçişi içeren Geçiş Sıralı, Paralel, Duraklat
Nesneyi belirtilen yol boyunca çeviren geçiş Yol Geçişi
Bir uygulamaya renk uygulamak için JavaFX pakette çeşitli sınıflar sağlar javafx.scene.paintpaketi. Bu paket, Paint adında bir soyut sınıf içerir ve renkleri uygulamak için kullanılan tüm sınıfların temel sınıfıdır.
Bu sınıfları kullanarak aşağıdaki desenlerde renkleri uygulayabilirsiniz -
Uniform - Bu desende renk düğüm boyunca eşit olarak uygulanır.
Image Pattern - Bu, düğümün bölgesini bir görüntü deseniyle doldurmanıza olanak tanır.
Gradient- Bu desende düğüme uygulanan renk bir noktadan diğerine değişir. İki tür degradeye sahiptir:Linear Gradient ve Radial Gradient.
Renk uygulayabileceğiniz tüm düğüm sınıfları Shape, Text (Sahne dahil), adlandırılmış yöntemlere sahip setFill() ve setStroke(). Bunlar, sırasıyla düğümlerin ve konturlarının renk değerlerini ayarlamaya yardımcı olacaktır.
Bu yöntemler, Paint türünde bir nesneyi kabul eder. Bu nedenle, bu tür görüntülerden birini oluşturmak için, bu sınıfları başlatmanız ve nesneyi bu yöntemlere bir parametre olarak iletmeniz gerekir.
Düğümlere Renk Uygulama
Düğümlere tek tip renk desenini ayarlamak için, sınıf rengi olan bir nesneyi setFill(), setStroke() yöntemler aşağıdaki gibidir -
//Setting color to the text
Color color = new Color.BEIGE
text.setFill(color);
//Setting color to the stroke
Color color = new Color.DARKSLATEBLUE
circle.setStroke(color);
Yukarıdaki kod bloğunda, bir renk nesnesi oluşturmak için renk sınıfının statik değişkenlerini kullanıyoruz.
Aynı şekilde, aşağıda gösterildiği gibi RGB değerlerini veya HSB renklendirme standardını veya renklerin web karma kodlarını da kullanabilirsiniz -
//creating color object by passing RGB values
Color c = Color.rgb(0,0,255);
//creating color object by passing HSB values
Color c = Color.hsb(270,1.0,1.0);
//creating color object by passing the hash code for web
Color c = Color.web("0x0000FF",1.0);
Misal
Aşağıda, JavaFX'te düğümlere nasıl renk uygulanacağını gösteren bir örnek verilmiştir. Burada bir daire ve metin düğümleri oluşturuyoruz ve bunlara renkler uyguluyoruz.
Bu kodu adıyla bir dosyaya kaydedin ColorExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class ColorExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the properties of the circle
circle.setCenterX(300.0f);
circle.setCenterY(180.0f);
circle.setRadius(90.0f);
//Setting color to the circle
circle.setFill(Color.DARKRED);
//Setting the stroke width
circle.setStrokeWidth(3);
//Setting color to the stroke
circle.setStroke(Color.DARKSLATEBLUE);
//Drawing a text
Text text = new Text("This is a colored circle");
//Setting the font of the text
text.setFont(Font.font("Edwardian Script ITC", 50));
//Setting the position of the text
text.setX(155);
text.setY(50);
//Setting color to the text
text.setFill(Color.BEIGE);
text.setStrokeWidth(2);
text.setStroke(Color.DARKSLATEBLUE);
//Creating a Group object
Group root = new Group(circle, text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Color Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac ColorExample.java
java ColorExample
Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -
Düğümlere Görüntü Modeli Uygulama
Düğümlere bir görüntü deseni uygulamak için, ImagePattern sınıf ve nesnesini setFill(), setStroke() yöntemler.
Bu sınıfın kurucusu altı parametreyi kabul eder, yani -
Image - Deseni oluşturmak istediğiniz görüntünün nesnesi.
x and y - Çapa dikdörtgeninin başlangıç noktasının (x, y) koordinatlarını temsil eden çift değişkenler.
height and width - Bir desen oluşturmak için kullanılan görüntünün yüksekliğini ve genişliğini temsil eden çift değişkenler.
isProportional- Bu bir Boole Değişkendir; bu özelliği true olarak ayarladığınızda, başlangıç ve bitiş konumları orantılı olacak şekilde ayarlanır.
ImagePattern radialGradient = new ImagePattern(dots, 20, 20, 40, 40, false);
Misal
Aşağıda, JavaFX'teki düğümlere görüntü deseninin nasıl uygulanacağını gösteren bir örnek verilmiştir. Burada bir daire ve bir metin düğümü oluşturuyoruz ve bunlara bir görüntü deseni uyguluyoruz.
Bu kodu adıyla bir dosyaya kaydedin ImagePatternExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import javafx.scene.paint.ImagePattern;
import javafx.scene.paint.Stop;
import javafx.stage.Stage;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class ImagePatternExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the properties of the circle
circle.setCenterX(300.0f);
circle.setCenterY(180.0f);
circle.setRadius(90.0f);
//Drawing a text
Text text = new Text("This is a colored circle");
//Setting the font of the text
text.setFont(Font.font("Edwardian Script ITC", 50));
//Setting the position of the text
text.setX(155);
text.setY(50);
//Setting the image pattern
String link = "https://encrypted-tbn1.gstatic.com"
+ "/images?q=tbn:ANd9GcRQub4GvEezKMsiIf67U"
+ "rOxSzQuQ9zl5ysnjRn87VOC8tAdgmAJjcwZ2qM";
Image image = new Image(link);
ImagePattern radialGradient = new ImagePattern(image, 20, 20, 40, 40, false);
//Setting the linear gradient to the circle and text
circle.setFill(radialGradient);
text.setFill(radialGradient);
//Creating a Group object
Group root = new Group(circle, text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Image pattern Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac ImagePatternExample.java
java ImagePatternExample
Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -
Doğrusal Degrade Deseni Uygulama
Düğümlere bir Doğrusal Degrade Modeli uygulamak için, LinearGradient sınıf ve nesnesini setFill(), setStroke() yöntemler.
Bu sınıfın kurucusu beş parametreyi kabul eder, yani -
startX, startY - Bu çift özellikler, degradenin başlangıç noktasının x ve y koordinatlarını temsil eder.
endX, endY - Bu çift özellikler, degradenin bitiş noktasının x ve y koordinatlarını temsil eder.
cycleMethod - Bu bağımsız değişken, başlangıç ve bitiş noktaları ile tanımlanan renk gradyan sınırlarının dışındaki bölgelerin nasıl doldurulması gerektiğini tanımlar.
proportional- Bu bir Boole Değişkendir; bu mülkün ayarlanması üzerinetrue, başlangıç ve bitiş konumları orantılı olarak ayarlanmıştır.
Stops - Bu bağımsız değişken, gradyan çizgisi boyunca renk durdurma noktalarını tanımlar.
//Setting the linear gradient
Stop[] stops = new Stop[] {
new Stop(0, Color.DARKSLATEBLUE),
new Stop(1, Color.DARKRED)
};
LinearGradient linearGradient =
new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);
Misal
Aşağıda, JavaFX'teki düğümlere bir gradyan modelinin nasıl uygulanacağını gösteren bir örnek verilmiştir. Burada, bir daire ve bir metin düğümleri oluşturuyoruz ve bunlara doğrusal gradyan modeli uyguluyoruz.
Bu kodu adıyla bir dosyaya kaydedin LinearGradientExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.stage.Stage;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class LinearGradientExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the properties of the circle
circle.setCenterX(300.0f);
circle.setCenterY(180.0f);
circle.setRadius(90.0f);
//Drawing a text
Text text = new Text("This is a colored circle");
//Setting the font of the text
text.setFont(Font.font("Edwardian Script ITC", 55));
//Setting the position of the text
text.setX(140);
text.setY(50);
//Setting the linear gradient
Stop[] stops = new Stop[] {
new Stop(0, Color.DARKSLATEBLUE),
new Stop(1, Color.DARKRED)
};
LinearGradient linearGradient =
new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);
//Setting the linear gradient to the circle and text
circle.setFill(linearGradient);
text.setFill(linearGradient);
//Creating a Group object
Group root = new Group(circle, text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Linear Gradient Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac LinearGradientExample.java
java LinearGradientExample
Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -
Radyal Degrade Deseni Uygulama
Düğümlere Radyal Degrade Çoğaltma uygulamak için, GradientPattern sınıf ve nesnesini setFill(), setStroke() yöntemler.
Bu sınıfın kurucusu, bazıları -
startX, startY - Bu çift özellikler, degradenin başlangıç noktasının x ve y koordinatlarını temsil eder.
endX, endY - Bu çift özellikler, degradenin bitiş noktasının x ve y koordinatlarını temsil eder.
cycleMethod - Bu bağımsız değişken, renk gradyan sınırlarının dışındaki bölgelerin başlangıç ve bitiş noktaları ile nasıl tanımlandığını ve nasıl doldurulması gerektiğini tanımlar.
proportional- Bu bir Boole Değişkendir; bu mülkün ayarlanması üzerinetrue başlangıç ve bitiş konumları orantılı olarak ayarlanmıştır.
Stops - Bu bağımsız değişken, gradyan çizgisi boyunca renk durdurma noktalarını tanımlar.
//Setting the radial gradient
Stop[] stops = new Stop[] {
new Stop(0.0, Color.WHITE),
new Stop(0.3, Color.RED),
new Stop(1.0, Color.DARKRED)
};
RadialGradient radialGradient =
new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);
Misal
Aşağıda, JavaFX'teki düğümlere bir radyal gradyan modelinin nasıl uygulanacağını gösteren bir örnek verilmiştir. Burada, bir daire ve bir metin düğümleri oluşturuyoruz ve bunlara gradyan modeli uyguluyoruz.
Bu kodu adıyla bir dosyaya kaydedin RadialGradientExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.RadialGradient;
import javafx.scene.paint.Stop;
import javafx.stage.Stage;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class RadialGradientExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the properties of the circle
circle.setCenterX(300.0f);
circle.setCenterY(180.0f);
circle.setRadius(90.0f);
//Drawing a text
Text text = new Text("This is a colored circle");
//Setting the font of the text
text.setFont(Font.font("Edwardian Script ITC", 50));
//Setting the position of the text
text.setX(155);
text.setY(50);
//Setting the radial gradient
Stop[] stops = new Stop[] {
new Stop(0.0, Color.WHITE),
new Stop(0.3, Color.RED),
new Stop(1.0, Color.DARKRED)
};
RadialGradient radialGradient =
new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);
//Setting the radial gradient to the circle and text
circle.setFill(radialGradient);
text.setFill(radialGradient);
//Creating a Group object
Group root = new Group(circle, text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Radial Gradient Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac RadialGradientExample.java
java RadialGradientExample
Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -
Pakette JavaFX tarafından sağlanan sınıfları kullanarak görüntüleri yükleyebilir ve değiştirebilirsiniz. javafx.scene.image. JavaFX, aşağıdaki gibi görüntü formatlarını desteklerBmp, Gif, Jpeg, Png.
Bu bölüm, JavaFX'e görüntüleri nasıl yükleyeceğinizi, bir görüntünün birden çok görünümde nasıl yansıtılacağını ve bir görüntünün piksellerini nasıl değiştireceğinizi öğretir.
Resim Yükleme
JavaFX'te bir görüntüyü, adlı sınıfı başlatarak yükleyebilirsiniz. Image paketin javafx.scene.image.
Sınıfın kurucusuna, aşağıdakilerden birini iletmelisiniz -
Bir InputStream yüklenecek görüntünün nesnesi veya
Resmin URL'sini tutan bir dize değişkeni.
//Passing FileInputStream object as a parameter
FileInputStream inputstream = new FileInputStream("C:\\images\\image.jpg");
Image image = new Image(inputstream);
//Loading image from URL
//Image image = new Image(new FileInputStream("url for the image));
Görüntüyü yükledikten sonra, görüntüyü örnekleyerek görüntünün görünümünü ayarlayabilirsiniz. ImageView sınıf ve görüntüyü yapıcısına aşağıdaki gibi geçirme -
ImageView imageView = new ImageView(image);
Misal
Aşağıda, JavaFX'te bir görüntünün nasıl yükleneceğini ve görünümün nasıl ayarlanacağını gösteren bir örnek verilmiştir.
Bu kodu adıyla bir dosyaya kaydedin ImageExample.java.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class ImageExample extends Application {
@Override
public void start(Stage stage) throws FileNotFoundException {
//Creating an image
Image image = new Image(new FileInputStream("path of the image"));
//Setting the image view
ImageView imageView = new ImageView(image);
//Setting the position of the image
imageView.setX(50);
imageView.setY(25);
//setting the fit height and width of the image view
imageView.setFitHeight(455);
imageView.setFitWidth(500);
//Setting the preserve ratio of the image view
imageView.setPreserveRatio(true);
//Creating a Group object
Group root = new Group(imageView);
//Creating a scene object
Scene scene = new Scene(root, 600, 500);
//Setting title to the Stage
stage.setTitle("Loading an image");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac ImageExample.java
java ImageExample
Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -
Bir Resmin Birden Fazla Görünümü
Aynı sahnedeki bir görüntü için birden fazla görünüm de ayarlayabilirsiniz. Aşağıdaki program, JavaFX'te bir sahnedeki bir görüntü için çeşitli görünümlerin nasıl ayarlanacağını gösteren bir örnektir.
Bu kodu adıyla bir dosyaya kaydedin MultipleViews.java.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class MultipleViews extends Application {
@Override
public void start(Stage stage) throws FileNotFoundException {
//Creating an image
Image image = new Image(new FileInputStream("file path"));
//Setting the image view 1
ImageView imageView1 = new ImageView(image);
//Setting the position of the image
imageView1.setX(50);
imageView1.setY(25);
//setting the fit height and width of the image view
imageView1.setFitHeight(300);
imageView1.setFitWidth(250);
//Setting the preserve ratio of the image view
imageView1.setPreserveRatio(true);
//Setting the image view 2
ImageView imageView2 = new ImageView(image);
//Setting the position of the image
imageView2.setX(350);
imageView2.setY(25);
//setting the fit height and width of the image view
imageView2.setFitHeight(150);
imageView2.setFitWidth(250);
//Setting the preserve ratio of the image view
imageView2.setPreserveRatio(true);
//Setting the image view 3
ImageView imageView3 = new ImageView(image);
//Setting the position of the image
imageView3.setX(350);
imageView3.setY(200);
//setting the fit height and width of the image view
imageView3.setFitHeight(100);
imageView3.setFitWidth(100);
//Setting the preserve ratio of the image view
imageView3.setPreserveRatio(true);
//Creating a Group object
Group root = new Group(imageView1, imageView2, imageView3);
//Creating a scene object
Scene scene = new Scene(root, 600, 400);
//Setting title to the Stage
stage.setTitle("Multiple views of an image");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac MultipleViews.java
java MultipleViews
Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -
Piksel Yazma
JavaFX adlı sınıflar sağlar PixelReader ve PixelWriterbir görüntünün piksellerini okumak ve yazmak için sınıflar. WritableImage sınıf, yazılabilir bir görüntü oluşturmak için kullanılır.
Aşağıda, bir görüntünün piksellerinin nasıl okunacağını ve yazılacağını gösteren bir örnek verilmiştir. Burada bir görüntünün renk değerini okuyor ve koyulaştırıyoruz.
Bu kodu adıyla bir dosyaya kaydedin WritingPixelsExample.java.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelReader;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class WritingPixelsExample extends Application {
@Override
public void start(Stage stage) throws FileNotFoundException {
//Creating an image
Image image = new Image(new FileInputStream("C:\\images\\logo.jpg"));
int width = (int)image.getWidth();
int height = (int)image.getHeight();
//Creating a writable image
WritableImage wImage = new WritableImage(width, height);
//Reading color from the loaded image
PixelReader pixelReader = image.getPixelReader();
//getting the pixel writer
PixelWriter writer = wImage.getPixelWriter();
//Reading the color of the image
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
//Retrieving the color of the pixel of the loaded image
Color color = pixelReader.getColor(x, y);
//Setting the color to the writable image
writer.setColor(x, y, color.darker());
}
}
//Setting the view for the writable image
ImageView imageView = new ImageView(wImage);
//Creating a Group object
Group root = new Group(imageView);
//Creating a scene object
Scene scene = new Scene(root, 600, 500);
//Setting title to the Stage
stage.setTitle("Writing pixels ");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac WritingPixelsExample.java
java WritingPixelsExample
Yürütüldüğünde, yukarıdaki program aşağıdaki gibi bir JavaFX penceresi oluşturur -
Önceki bölümlerde, bir XY düzleminde 2B şekillerin nasıl çizileceğini gördük. Bu 2D şekillere ek olarak, JavaFX kullanarak birkaç başka 3D şekil de çizebiliriz.
3D şekil
Genel olarak, bir 3B şekil, XYZ düzleminde çizilebilen geometrik bir şekildir. Bunlar birCylinder, Sphere ve bir Box.
Yukarıda belirtilen 3B şekillerin her biri bir sınıfla temsil edilir ve tüm bu sınıflar pakete aittir. javafx.scene.shape. Adlı sınıfShape3D JavaFX'teki tüm 3 Boyutlu şekillerin temel sınıfıdır.
3B Şekil Oluşturma
3 Boyutlu bir şekil oluşturmak için yapmanız gerekenler -
Gerekli 3B şeklin ilgili sınıfını somutlaştırın.
3B şeklin özelliklerini ayarlayın.
Gruba 3B şekil nesnesini ekleyin.
İlgili Sınıfın Örneklenmesi
3 Boyutlu bir şekil oluşturmak için, her şeyden önce ilgili sınıfını başlatmanız gerekir. Örneğin, bir 3B kutu oluşturmak istiyorsanız, Box adlı sınıfı aşağıdaki gibi başlatmanız gerekir -
Box box = new Box();
Şeklin Özelliklerini Ayarlama
Sınıfı başlattıktan sonra, ayarlayıcı yöntemlerini kullanarak şeklin özelliklerini ayarlamanız gerekir.
Örneğin, bir 3B kutu çizmek için Genişliğini, Yüksekliğini, Derinliğini iletmeniz gerekir. Bu değerleri, ilgili ayarlayıcı yöntemlerini kullanarak aşağıdaki gibi belirtebilirsiniz -
//Setting the properties of the Box
box.setWidth(200.0);
box.setHeight(400.0);
box.setDepth(200.0);
Şekil Nesnesini Gruba Ekleme
Son olarak, şeklin nesnesini aşağıda gösterildiği gibi kurucunun bir parametresi olarak ileterek gruba eklemeniz gerekir.
//Creating a Group object
Group root = new Group(box);
Aşağıdaki tablo, JavaFX tarafından sağlanan çeşitli 3B şekillerin listesini verir.
S.No | Şekil ve Açıklama |
---|---|
1 | Kutu Küboid, üç boyutlu bir şekildir. length (derinlik), widthve bir height. JavaFX'te üç boyutlu bir kutu adlı bir sınıfla temsil edilir. Box. Bu sınıf pakete aittirjavafx.scene.shape. Bu sınıfın örneğini oluşturarak, JavaFX'te bir Box düğümü oluşturabilirsiniz. Bu sınıf, çift veri türünün 3 özelliğine sahiptir:
|
2 | Silindir Silindir, kavisli bir yüzeyle birbirine bağlanan iki paralel (çoğunlukla dairesel) tabana sahip kapalı bir katıdır. İki parametre ile tanımlanır: radius dairesel tabanı ve height silindirin. JavaFX'te, bir silindir adlı bir sınıfla temsil edilir. Cylinder. Bu sınıf pakete aittirjavafx.scene.shape. Bu sınıfın örneğini oluşturarak, JavaFX'te bir silindir düğümü oluşturabilirsiniz. Bu sınıf, çift veri türünün 2 özelliğine sahiptir:
|
3 | Küre Küre, 3B uzayda belirli bir noktadan aynı mesafede r olan noktalar kümesi olarak tanımlanır. Bu mesafe r kürenin yarıçapıdır ve verilen nokta kürenin merkezidir. JavaFX'te bir küre, adlı bir sınıfla temsil edilir. Sphere. Bu sınıf pakete aittirjavafx.scene.shape. Bu sınıfın örneğini oluşturarak, JavaFX'te bir küre düğümü oluşturabilirsiniz. Bu sınıfın adlı bir özelliği var radiusçift veri türü. Bir Kürenin yarıçapını temsil eder. |
3B Nesnelerin Özellikleri
Tüm 3 Boyutlu nesneler için, Cull Face, Drawing Mode, Material gibi çeşitli özellikleri ayarlayabilirsiniz.
Aşağıdaki bölümde 3B nesnelerin özellikleri anlatılmaktadır.
Cull Face
Genel olarak ayırma, bir şeklin yanlış yönlendirilmiş kısımlarının (görüş alanında görünmeyen) kaldırılmasıdır.
Cull Face özelliği şu türdendir: CullFaceve bir 3B şeklin Cull Face'ini temsil eder. Yöntemi kullanarak bir şeklin Boş Yüzünü ayarlayabilirsiniz.setCullFace() aşağıda gösterildiği gibi -
box.setCullFace(CullFace.NONE);
Bir şeklin fırça darbesi türü -
None - Hiçbir ayırma gerçekleştirilmez (CullFace.NONE).
Front- Ön tarafa bakan tüm çokgenler itlaf edilmiştir. (CullFace.FRONT).
Back- Arkaya bakan tüm çokgenler itlaf edilmiştir. (StrokeType.BACK).
Varsayılan olarak, 3 Boyutlu bir şeklin ayrılma yüzü Geri'dir.
Misal
Aşağıdaki program, kürenin çeşitli ayırma yüzlerini gösteren bir örnektir. Bu kodu adıyla bir dosyaya kaydedinSphereCullFace.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.CullFace;
import javafx.stage.Stage;
import javafx.scene.shape.Sphere;
public class SphereCullFace extends Application {
@Override
public void start(Stage stage) {
//Drawing Sphere1
Sphere sphere1 = new Sphere();
//Setting the radius of the Sphere
sphere1.setRadius(50.0);
//Setting the position of the sphere
sphere1.setTranslateX(100);
sphere1.setTranslateY(150);
//setting the cull face of the sphere to front
sphere1.setCullFace(CullFace.FRONT);
//Drawing Sphere2
Sphere sphere2 = new Sphere();
//Setting the radius of the Sphere
sphere2.setRadius(50.0);
//Setting the position of the sphere
sphere2.setTranslateX(300);
sphere2.setTranslateY(150);
//Setting the cull face of the sphere to back
sphere2.setCullFace(CullFace.BACK);
//Drawing Sphere3
Sphere sphere3 = new Sphere();
//Setting the radius of the Sphere
sphere3.setRadius(50.0);
//Setting the position of the sphere
sphere3.setTranslateX(500);
sphere3.setTranslateY(150);
//Setting the cull face of the sphere to none
sphere2.setCullFace(CullFace.NONE);
//Creating a Group object
Group root = new Group(sphere1, sphere2, sphere3);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a Sphere");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac SphereCullFace.java
java SphereCullFace
Yürütüldüğünde, yukarıdaki program, çıkarılmış yüz değerlerine sahip üç küre görüntüleyen bir JavaFX penceresi oluşturur. FRONT, BACK ve NONE sırasıyla aşağıdaki gibi -
Çizim Modları
Özellik türündedir DrawModeve mevcut 3B şekli çizmek için kullanılan çizim modunu temsil eder. SetDrawMode () yöntemini kullanarak bir 3B şekil çizmek için aşağıdaki gibi çizim modunu seçebilirsiniz -
box.setDrawMode(DrawMode.FILL);
JavaFX'te, bir 3B şekil çizmek için iki çizim modu seçebilirsiniz, bunlar:
Fill - Bu mod bir 2B şekil çizer ve doldurur (DrawMode.FILL).
Line - Bu mod, çizgileri kullanarak bir 3B şekil çizer (DrawMode.LINE).
Varsayılan olarak, 3 boyutlu bir şeklin çizim modu dolgudur.
Misal
Aşağıdaki program, bir 3B kutunun çeşitli çizim modlarını gösteren bir örnektir. Bu kodu adıyla bir dosyaya kaydedinBoxDrawMode.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.scene.shape.DrawMode;
import javafx.stage.Stage;
public class BoxDrawMode extends Application {
@Override
public void start(Stage stage) {
//Drawing a Box
Box box1 = new Box();
//Setting the properties of the Box
box1.setWidth(100.0);
box1.setHeight(100.0);
box1.setDepth(100.0);
//Setting the position of the box
box1.setTranslateX(200);
box1.setTranslateY(150);
box1.setTranslateZ(0);
//Setting the drawing mode of the box
box1.setDrawMode(DrawMode.LINE);
//Drawing a Box
Box box2 = new Box();
//Setting the properties of the Box
box2.setWidth(100.0);
box2.setHeight(100.0);
box2.setDepth(100.0);
//Setting the position of the box
box2.setTranslateX(450); //450
box2.setTranslateY(150);//150
box2.setTranslateZ(300);
//Setting the drawing mode of the box
box2.setDrawMode(DrawMode.FILL);
//Creating a Group object
Group root = new Group(box1, box2);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting camera
PerspectiveCamera camera = new PerspectiveCamera(false);
camera.setTranslateX(0);
camera.setTranslateY(0);
camera.setTranslateZ(0);
scene.setCamera(camera);
//Setting title to the Stage
stage.setTitle("Drawing a Box");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac BoxDrawMode.java
java BoxDrawMode
Yürütüldüğünde, yukarıdaki program, aşağıdaki gibi sırasıyla LINE ve FILL çizim modu değerlerine sahip iki kutuyu görüntüleyen bir JavaFX penceresi oluşturur -
Malzeme
Cull Face özelliği, Materialve 3 boyutlu bir şeklin malzemesinin yüzeyini seçmek için kullanılır. Yöntemi kullanarak bir 3B şeklin malzemesini ayarlayabilirsiniz.setCullFace() aşağıdaki gibi -
cylinder.setMaterial(material);
Bu yöntem için yukarıda belirtildiği gibi, Material türünde bir nesneyi iletmeniz gerekir. PhongMaterial paketin sınıfı javafx.scene.paintbu sınıfın bir alt sınıfıdır ve Phong gölgeli bir malzemeyi temsil eden 7 özellik sağlar. Tüm bu tür malzemeleri, bu özelliklerin ayarlayıcı yöntemlerini kullanarak bir 3B şeklin yüzeyine uygulayabilirsiniz.
Aşağıda, JavaFX'te bulunan malzeme türleri verilmiştir -
bumpMap - Bu, RGB Görüntüsü olarak saklanan normal bir haritayı temsil eder.
diffuseMap - Bu dağınık bir haritayı temsil ediyor.
selfIlluminationMap - Bu, bu PhongMaterial'ın kendi kendini aydınlatma haritasını temsil eder.
specularMap - Bu, bu PhongMaterial'ın aynasal bir haritasını temsil ediyor.
diffuseColor - Bu, bu PhongMaterial'ın yaygın bir rengini temsil eder.
specularColor - Bu, bu PhongMaterial'ın aynasal bir rengini temsil eder.
specularPower - Bu PhongMaterial'ın speküler bir gücünü temsil eder.
Varsayılan olarak, 3 Boyutlu bir şeklin malzemesi, dağınık bir açık gri renge sahip bir PhongMaterial'dır.
Misal
Aşağıda, silindir üzerinde çeşitli malzemeleri gösteren bir örnek verilmiştir. Bu kodu adıyla bir dosyaya kaydedinCylinderMaterials.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Cylinder;
import javafx.stage.Stage;
public class CylinderMaterials extends Application {
@Override
public void start(Stage stage) {
//Drawing Cylinder1
Cylinder cylinder1 = new Cylinder();
//Setting the properties of the Cylinder
cylinder1.setHeight(130.0f);
cylinder1.setRadius(30.0f);
//Setting the position of the Cylinder
cylinder1.setTranslateX(100);
cylinder1.setTranslateY(75);
//Preparing the phong material of type bump map
PhongMaterial material1 = new PhongMaterial();
material1.setBumpMap(new Image
("http://www.tutorialspoint.com/images/tplogo.gif"));
//Setting the bump map material to Cylinder1
cylinder1.setMaterial(material1);
//Drawing Cylinder2
Cylinder cylinder2 = new Cylinder();
//Setting the properties of the Cylinder
cylinder2.setHeight(130.0f);
cylinder2.setRadius(30.0f);
//Setting the position of the Cylinder
cylinder2.setTranslateX(200);
cylinder2.setTranslateY(75);
//Preparing the phong material of type diffuse map
PhongMaterial material2 = new PhongMaterial();
material2.setDiffuseMap(new Image
("http://www.tutorialspoint.com/images/tp-logo.gif"));
//Setting the diffuse map material to Cylinder2
cylinder2.setMaterial(material2);
//Drawing Cylinder3
Cylinder cylinder3 = new Cylinder();
//Setting the properties of the Cylinder
cylinder3.setHeight(130.0f);
cylinder3.setRadius(30.0f);
//Setting the position of the Cylinder
cylinder3.setTranslateX(300);
cylinder3.setTranslateY(75);
//Preparing the phong material of type Self Illumination Map
PhongMaterial material3 = new PhongMaterial();
material3.setSelfIlluminationMap(new Image
("http://www.tutorialspoint.com/images/tp-logo.gif"));
//Setting the Self Illumination Map material to Cylinder3
cylinder3.setMaterial(material3);
//Drawing Cylinder4
Cylinder cylinder4 = new Cylinder();
//Setting the properties of the Cylinder
cylinder4.setHeight(130.0f);
cylinder4.setRadius(30.0f);
//Setting the position of the Cylinder
cylinder4.setTranslateX(400);
cylinder4.setTranslateY(75);
//Preparing the phong material of type Specular Map
PhongMaterial material4 = new PhongMaterial();
material4.setSpecularMap(new Image
("http://www.tutorialspoint.com/images/tp-logo.gif"));
//Setting the Specular Map material to Cylinder4
cylinder4.setMaterial(material4);
//Drawing Cylinder5
Cylinder cylinder5 = new Cylinder();
//Setting the properties of the Cylinder
cylinder5.setHeight(130.0f);
cylinder5.setRadius(30.0f);
//Setting the position of the Cylinder
cylinder5.setTranslateX(100);
cylinder5.setTranslateY(300);
//Preparing the phong material of type diffuse color
PhongMaterial material5 = new PhongMaterial();
material5.setDiffuseColor(Color.BLANCHEDALMOND);
//Setting the diffuse color material to Cylinder5
cylinder5.setMaterial(material5);
//Drawing Cylinder6
Cylinder cylinder6 = new Cylinder();
//Setting the properties of the Cylinder
cylinder6.setHeight(130.0f);
cylinder6.setRadius(30.0f);
//Setting the position of the Cylinder
cylinder6.setTranslateX(200);
cylinder6.setTranslateY(300);
//Preparing the phong material of type specular color
PhongMaterial material6 = new PhongMaterial();
//setting the specular color map to the material
material6.setSpecularColor(Color.BLANCHEDALMOND);
//Setting the specular color material to Cylinder6
cylinder6.setMaterial(material6);
//Drawing Cylinder7
Cylinder cylinder7 = new Cylinder();
//Setting the properties of the Cylinder
cylinder7.setHeight(130.0f);
cylinder7.setRadius(30.0f);
//Setting the position of the Cylinder
cylinder7.setTranslateX(300);
cylinder7.setTranslateY(300);
//Preparing the phong material of type Specular Power
PhongMaterial material7 = new PhongMaterial();
material7.setSpecularPower(0.1);
//Setting the Specular Power material to the Cylinder
cylinder7.setMaterial(material7);
//Creating a Group object
Group root = new Group(cylinder1 ,cylinder2, cylinder3,
cylinder4, cylinder5, cylinder6, cylinder7);
//Creating a scene object
Scene scene = new Scene(root, 600, 400);
//Setting camera
PerspectiveCamera camera = new PerspectiveCamera(false);
camera.setTranslateX(0);
camera.setTranslateY(0);
camera.setTranslateZ(-10);
scene.setCamera(camera);
//Setting title to the Stage
stage.setTitle("Drawing a cylinder");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
Javac CylinderMaterials.java
java CylinderMaterials
Yürütüldüğünde, yukarıdaki program, aşağıdaki ekran görüntüsünde gösterildiği gibi sırasıyla Malzemeler, Bump Haritası, Yayılma Haritası, Kendinden Aydınlatma Haritası, Aynasal Harita, Yaygın Renk, Aynasal Renk (BLANCHEDALMOND) Aynasal Güç içeren 7 silindiri görüntüleyen bir JavaFX penceresi oluşturur. -
JavaFX'te GUI uygulamaları, web uygulamaları ve grafik uygulamaları geliştirebiliriz. Bu tür uygulamalarda, bir kullanıcı uygulamayla (düğümler) etkileşime girdiğinde, bir olayın meydana geldiği söylenir.
Örneğin, bir düğmeye tıklamak, fareyi hareket ettirmek, klavyeden bir karakter girmek, listeden bir öğe seçmek, sayfayı kaydırmak bir olayın meydana gelmesine neden olan faaliyetlerdir.
Etkinlik Türleri
Olaylar genel olarak aşağıdaki iki kategoriye ayrılabilir -
Foreground Events- Bir kullanıcının doğrudan etkileşimini gerektiren olaylar. Bir kişinin Grafik Kullanıcı Arayüzündeki grafik bileşenlerle etkileşime girmesinin sonucu olarak oluşturulurlar. Örneğin, bir düğmeye tıklamak, fareyi hareket ettirmek, klavyeden bir karakter girmek, listeden bir öğe seçmek, sayfayı kaydırmak vb.
Background Events- Son kullanıcının etkileşimini gerektiren olaylar, arka plan olayları olarak bilinir. İşletim sistemi kesintileri, donanım veya yazılım arızası, zamanlayıcının sona ermesi, işlemin tamamlanması arka plan olaylarına örnektir.
JavaFX'teki olaylar
JavaFX, çok çeşitli olayları işlemek için destek sağlar. Adlı sınıfEvent paketin javafx.event bir olay için temel sınıftır.
Alt sınıflarından herhangi birinin bir örneği bir olaydır. JavaFX, çok çeşitli etkinlikler sağlar. Bazıları aşağıda listelenmiştir.
Mouse Event- Bu, bir fareye tıklandığında meydana gelen bir giriş olayıdır. Adlı sınıf tarafından temsil edilirMouseEvent. Fareye tıklanma, fareye basma, fareyi bırakma, fareyi hareket ettirme, fareye girilen hedef, fareden çıkılan hedef vb.
Key Event- Bu, bir düğümde meydana gelen tuş vuruşunu gösteren bir giriş olayıdır. Adlı sınıf tarafından temsil edilirKeyEvent. Bu olay, tuşa basılması, tuşun bırakılması ve tuşun yazılması gibi eylemleri içerir.
Drag Event- Bu, fare sürüklendiğinde meydana gelen bir giriş olayıdır. Adlı sınıf tarafından temsil edilirDragEvent. Girilen sürükle, bırakılan sürükle, girilen hedefi sürükleme, çıkılan hedefi sürükleme, üzerine sürükleme vb.
Window Event- Bu, eylemleri gösterme / gizleme ile ilgili bir olaydır. Adlı sınıf tarafından temsil edilirWindowEvent. Pencere gizleme, pencere gösterme, pencere gizleme, pencere gösterme vb. Eylemleri içerir.
Olay işleme
Olay İşleme, olayı kontrol eden ve bir olay meydana gelirse ne olması gerektiğine karar veren mekanizmadır. Bu mekanizma, bir olay gerçekleştiğinde yürütülen bir olay işleyicisi olarak bilinen koda sahiptir.
JavaFX, olayları işlemek için işleyiciler ve filtreler sağlar. JavaFX'te her olayda -
Target- Bir olayın meydana geldiği düğüm. Hedef, bir pencere, sahne ve bir düğüm olabilir.
Source- Olayın oluşturulduğu kaynak, olayın kaynağı olacaktır. Yukarıdaki senaryoda, olayın kaynağı faredir.
Type- Meydana gelen olayın türü; fare olayı durumunda - fareye basılırsa, bırakılan fare olay türleridir.
Aşağıdaki gibi bir grup nesnesi kullanılarak eklenen Daire, Durdur ve Oynat Düğmeleri olan bir uygulamamız olduğunu varsayalım -
Oynat düğmesine tıklarsanız, kaynak fare, hedef düğüm oynat düğmesi ve üretilen olayın türü fare tıklaması olacaktır.
JavaFX'te Olay İşlemenin Aşamaları
Bir olay oluşturulduğunda, JavaFX aşağıdaki aşamalardan geçer.
Güzergah Yapımı
Bir olay oluşturulduğunda, olayın varsayılan / ilk rotası bir Event Dispatch chain. Sahneden kaynak Düğüme giden yoldur.
Yukarıdaki senaryoda oynat düğmesine tıkladığımızda oluşturulan olay için olay gönderme zinciri aşağıdadır.
Olay Yakalama Aşaması
Olay gönderme zincirinin oluşturulmasından sonra, uygulamanın kök düğümü olayı gönderir. Bu olay, gönderim zincirindeki tüm düğümlere (yukarıdan aşağıya) gider. Bu düğümlerden herhangi birinin birfilteroluşturulan olay için kayıtlıysa, yürütülecektir. Gönderim zincirindeki düğümlerden hiçbirinde oluşturulan olay için filtre yoksa, hedef düğüme geçirilir ve son olarak hedef düğüm olayı işler.
Event Bubbling Aşaması
Olay köpürme aşamasında, olay hedef düğümden aşama düğümüne (aşağıdan yukarıya) gönderilir. Olay gönderme zincirindeki düğümlerden herhangi birinde birhandleroluşturulan olay için kayıtlıysa, yürütülecektir. Bu düğümlerden hiçbirinin olayı işleyecek işleyicileri yoksa, olay kök düğüme ulaşır ve sonunda işlem tamamlanır.
Olay İşleyicileri ve Filtreleri
Olay filtreleri ve işleyiciler, bir olayı işlemek için uygulama mantığını içerenlerdir. Bir düğüm birden fazla işleyiciye / filtreye kaydolabilir. Üst-alt düğümler durumunda, tüm alt düğümler için varsayılan olarak işlenen üst öğelere ortak bir filtre / işleyici sağlayabilirsiniz.
Yukarıda belirtildiği gibi, olay sırasında işleme, yürütülen bir filtredir ve olay köpürme aşamasında bir işleyici çalıştırılır. Tüm işleyiciler ve filtreler arayüzü uygularEventHandler paketin javafx.event.
Olay Filtresi Ekleme ve Kaldırma
Bir düğüme olay filtresi eklemek için, yöntemi kullanarak bu filtreyi kaydetmeniz gerekir. addEventFilter() of Node sınıf.
//Creating the mouse event handler
EventHandler<MouseEvent> eventHandler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println("Hello World");
circle.setFill(Color.DARKSLATEBLUE);
}
};
//Adding event Filter
Circle.addEventFilter(MouseEvent.MOUSE_CLICKED, eventHandler);
Aynı şekilde, aşağıda gösterildiği gibi removeEventFilter () yöntemini kullanarak bir filtreyi kaldırabilirsiniz -
circle.removeEventFilter(MouseEvent.MOUSE_CLICKED, eventHandler);
Olay İşleme Örneği
Aşağıda, olay filtrelerini kullanarak JavaFX'te olay işlemeyi gösteren bir örnek verilmiştir. Bu kodu adıyla bir dosyaya kaydedinEventFiltersExample.java.
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class EventFiltersExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the position of the circle
circle.setCenterX(300.0f);
circle.setCenterY(135.0f);
//Setting the radius of the circle
circle.setRadius(25.0f);
//Setting the color of the circle
circle.setFill(Color.BROWN);
//Setting the stroke width of the circle
circle.setStrokeWidth(20);
//Setting the text
Text text = new Text("Click on the circle to change its color");
//Setting the font of the text
text.setFont(Font.font(null, FontWeight.BOLD, 15));
//Setting the color of the text
text.setFill(Color.CRIMSON);
//setting the position of the text
text.setX(150);
text.setY(50);
//Creating the mouse event handler
EventHandler<MouseEvent> eventHandler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println("Hello World");
circle.setFill(Color.DARKSLATEBLUE);
}
};
//Registering the event filter
circle.addEventFilter(MouseEvent.MOUSE_CLICKED, eventHandler);
//Creating a Group object
Group root = new Group(circle, text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting the fill color to the scene
scene.setFill(Color.LAVENDER);
//Setting title to the Stage
stage.setTitle("Event Filters Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac EventFiltersExample.java
java EventFiltersExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Olay İşleyicileri Ekleme ve Kaldırma
Bir düğüme olay işleyicisi eklemek için, yöntemi kullanarak bu işleyiciyi kaydetmeniz gerekir. addEventHandler() of Node aşağıda gösterildiği gibi sınıf.
//Creating the mouse event handler
EventHandler<javafx.scene.input.MouseEvent> eventHandler =
new EventHandler<javafx.scene.input.MouseEvent>() {
@Override
public void handle(javafx.scene.input.MouseEvent e) {
System.out.println("Hello World");
circle.setFill(Color.DARKSLATEBLUE);
}
};
//Adding the event handler
circle.addEventHandler(javafx.scene.input.MouseEvent.MOUSE_CLICKED, eventHandler);
Aynı şekilde, aşağıda gösterildiği gibi removeEventHandler () yöntemini kullanarak bir olay işleyicisini kaldırabilirsiniz -
circle.removeEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler);
Misal
Aşağıdaki program, olay işleyicileri kullanılarak JavaFX'te olay işlemeyi gösteren bir örnektir.
Bu kodu adıyla bir dosyaya kaydedin EventHandlersExample.java.
import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
import javafx.util.Duration;
public class EventHandlersExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Box
Box box = new Box();
//Setting the properties of the Box
box.setWidth(150.0);
box.setHeight(150.0);
box.setDepth(100.0);
//Setting the position of the box
box.setTranslateX(350);
box.setTranslateY(150);
box.setTranslateZ(50);
//Setting the text
Text text = new Text("Type any letter to rotate the box,
and click on the box to stop the rotation");
//Setting the font of the text
text.setFont(Font.font(null, FontWeight.BOLD, 15));
//Setting the color of the text
text.setFill(Color.CRIMSON);
//setting the position of the text
text.setX(20);
text.setY(50);
//Setting the material of the box
PhongMaterial material = new PhongMaterial();
material.setDiffuseColor(Color.DARKSLATEBLUE);
//Setting the diffuse color material to box
box.setMaterial(material);
//Setting the rotation animation to the box
RotateTransition rotateTransition = new RotateTransition();
//Setting the duration for the transition
rotateTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
rotateTransition.setNode(box);
//Setting the axis of the rotation
rotateTransition.setAxis(Rotate.Y_AXIS);
//Setting the angle of the rotation
rotateTransition.setByAngle(360);
//Setting the cycle count for the transition
rotateTransition.setCycleCount(50);
//Setting auto reverse value to false
rotateTransition.setAutoReverse(false);
//Creating a text filed
TextField textField = new TextField();
//Setting the position of the text field
textField.setLayoutX(50);
textField.setLayoutY(100);
//Handling the key typed event
EventHandler<KeyEvent> eventHandlerTextField = new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
//Playing the animation
rotateTransition.play();
}
};
//Adding an event handler to the text feld
textField.addEventHandler(KeyEvent.KEY_TYPED, eventHandlerTextField);
//Handling the mouse clicked event(on box)
EventHandler<javafx.scene.input.MouseEvent> eventHandlerBox =
new EventHandler<javafx.scene.input.MouseEvent>() {
@Override
public void handle(javafx.scene.input.MouseEvent e) {
rotateTransition.stop();
}
};
//Adding the event handler to the box
box.addEventHandler(javafx.scene.input.MouseEvent.MOUSE_CLICKED, eventHandlerBox);
//Creating a Group object
Group root = new Group(box, textField, text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting camera
PerspectiveCamera camera = new PerspectiveCamera(false);
camera.setTranslateX(0);
camera.setTranslateY(0);
camera.setTranslateZ(0);
scene.setCamera(camera);
//Setting title to the Stage
stage.setTitle("Event Handlers Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac EventHandlersExample.java
java EventHandlersExample
Yürütülürken, yukarıdaki program, aşağıda gösterildiği gibi bir metin alanı ve bir 3B kutu görüntüleyen bir JavaFX penceresi oluşturur -
Burada, metin alanına bir harf yazarsanız, 3B kutu x ekseni boyunca dönmeye başlar. Kutuya tekrar tıklarsanız dönüş durur.
Olay İşleme için Kolaylık Yöntemlerini Kullanma
JavaFX'teki bazı sınıflar, olay işleyici özelliklerini tanımlar. Değerleri, ilgili ayarlayıcı yöntemlerini kullanarak bu özelliklere ayarlayarak, bir olay işleyicisine kaydolabilirsiniz. Bu yöntemler, kolaylık yöntemleri olarak bilinir.
Bu yöntemlerin çoğu Düğüm, Sahne, Pencere vb. Sınıflarda bulunur ve tüm alt sınıflarında mevcuttur.
Örneğin, bir düğmeye fare olay dinleyicisi eklemek için, uygunluk yöntemini kullanabilirsiniz. setOnMouseClicked() Aşağıda gösterildiği gibi.
playButton.setOnMouseClicked((new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Hello World");
pathTransition.play();
}
}));
Misal
Aşağıdaki program, kolaylık yöntemlerini kullanarak JavaFX'te olay işlemeyi gösteren bir örnektir.
Bu kodu adıyla bir dosyaya kaydedin ConvinienceMethodsExample.java.
import javafx.animation.PathTransition;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.stage.Stage;
import javafx.util.Duration;
public class ConvinienceMethodsExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Circle
Circle circle = new Circle();
//Setting the position of the circle
circle.setCenterX(300.0f);
circle.setCenterY(135.0f);
//Setting the radius of the circle
circle.setRadius(25.0f);
//Setting the color of the circle
circle.setFill(Color.BROWN);
//Setting the stroke width of the circle
circle.setStrokeWidth(20);
//Creating a Path
Path path = new Path();
//Moving to the staring point
MoveTo moveTo = new MoveTo(208, 71);
//Creating 1st line
LineTo line1 = new LineTo(421, 161);
//Creating 2nd line
LineTo line2 = new LineTo(226,232);
//Creating 3rd line
LineTo line3 = new LineTo(332,52);
//Creating 4th line
LineTo line4 = new LineTo(369, 250);
//Creating 5th line
LineTo line5 = new LineTo(208, 71);
//Adding all the elements to the path
path.getElements().add(moveTo);
path.getElements().addAll(line1, line2, line3, line4, line5);
//Creating the path transition
PathTransition pathTransition = new PathTransition();
//Setting the duration of the transition
pathTransition.setDuration(Duration.millis(1000));
//Setting the node for the transition
pathTransition.setNode(circle);
//Setting the path for the transition
pathTransition.setPath(path);
//Setting the orientation of the path
pathTransition.setOrientation(
PathTransition.OrientationType.ORTHOGONAL_TO_TAN GENT);
//Setting the cycle count for the transition
pathTransition.setCycleCount(50);
//Setting auto reverse value to true
pathTransition.setAutoReverse(false);
//Creating play button
Button playButton = new Button("Play");
playButton.setLayoutX(300);
playButton.setLayoutY(250);
circle.setOnMouseClicked (new EventHandler<javafx.scene.input.MouseEvent>() {
@Override
public void handle(javafx.scene.input.MouseEvent e) {
System.out.println("Hello World");
circle.setFill(Color.DARKSLATEBLUE);
}
});
playButton.setOnMouseClicked((new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Hello World");
pathTransition.play();
}
}));
//Creating stop button
Button stopButton = new Button("stop");
stopButton.setLayoutX(250);
stopButton.setLayoutY(250);
stopButton.setOnMouseClicked((new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Hello World");
pathTransition.stop();
}
}));
//Creating a Group object
Group root = new Group(circle, playButton, stopButton);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
scene.setFill(Color.LAVENDER);
//Setting title to the Stage
stage.setTitle("Convenience Methods Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac ConvinienceMethodsExample.java
java ConvinienceMethodsExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur. Burada animasyonu başlatmak için oynat düğmesine tıklayın ve animasyonu durdurmak için durdur düğmesine tıklayın.
Her kullanıcı arayüzü aşağıdaki üç ana hususu dikkate alır:
UI elements- Bunlar, kullanıcının sonunda gördüğü ve etkileşim kurduğu temel görsel öğelerdir. JavaFX, bu eğitimde ele alacağımız, temelden karmaşığa değişen, yaygın olarak kullanılan ve yaygın öğelerin geniş bir listesini sağlar.
Layouts- UI öğelerinin ekranda nasıl düzenleneceğini tanımlarlar ve GUI'ye (Grafik Kullanıcı Arayüzü) son bir görünüm ve his sağlarlar. Bu kısım, Düzen bölümünde ele alınacaktır.
Behavior- Bunlar, kullanıcı UI öğeleriyle etkileşime girdiğinde meydana gelen olaylardır. Bu kısım, Olay İşleme bölümünde ele alınacaktır.
JavaFX, pakette birkaç sınıf sağlar javafx.scene.control. JavaFX, çeşitli GUI bileşenleri (kontroller) oluşturmak için tarih seçici, düğme metin alanı vb. Gibi çeşitli kontrolleri destekler.
Her denetim bir sınıfla temsil edilir; ilgili sınıfını başlatarak bir denetim oluşturabilirsiniz.
GUI JavaFX kullanılarak tasarlanırken yaygın olarak kullanılan kontrollerin listesi aşağıdadır.
S.No | Kontrol ve Açıklama |
---|---|
1 | Label Bir Etiket nesnesi, metni yerleştirmek için bir bileşendir. |
2 | Button Bu sınıf, etiketli bir düğme oluşturur. |
3 | ColorPicker ColorPicker, kullanıcının bir rengi işlemesine ve seçmesine izin vermek için tasarlanmış bir denetim bölmesi sağlar. |
4 | CheckBox CheckBox, açık (doğru) veya kapalı (yanlış) durumda olabilen bir grafik bileşendir. |
5 | RadioButton RadioButton sınıfı, bir grupta AÇIK (doğru) veya KAPALI (yanlış) durumda olabilen bir grafik bileşendir. |
6 | ListView ListView bileşeni, kullanıcıya metin öğelerinin kayan bir listesini sunar. |
7 | TextField TextField nesnesi, tek bir metin satırının düzenlenmesine izin veren bir metin bileşenidir. |
8 | PasswordField PasswordField nesnesi, parola girişi için özelleştirilmiş bir metin bileşenidir. |
9 | Scrollbar Kaydırma çubuğu kontrolü, kullanıcının değerler aralığı arasından seçim yapmasını sağlamak için bir kaydırma çubuğu bileşenini temsil eder. |
10 | FileChooser Bir FileChooser denetimi, kullanıcının bir dosya seçebileceği bir iletişim penceresini temsil eder. |
11 | ProgressBar Görev tamamlanmaya doğru ilerledikçe, ilerleme çubuğu görevin tamamlanma yüzdesini görüntüler. |
12 | Slider Bir Kaydırıcı, kullanıcının sınırlı bir aralık içinde bir düğmeyi kaydırarak grafiksel olarak bir değer seçmesini sağlar. |
Misal
Aşağıdaki program, JavaFX'te bir oturum açma sayfasını görüntüleyen bir örnektir. Burada kontrolleri kullanıyoruzlabel, text field, password field ve button.
Bu kodu adıyla bir dosyaya kaydedin LoginPage.java.
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class LoginPage extends Application {
@Override
public void start(Stage stage) {
//creating label email
Text text1 = new Text("Email");
//creating label password
Text text2 = new Text("Password");
//Creating Text Filed for email
TextField textField1 = new TextField();
//Creating Text Filed for password
PasswordField textField2 = new PasswordField();
//Creating Buttons
Button button1 = new Button("Submit");
Button button2 = new Button("Clear");
//Creating a Grid Pane
GridPane gridPane = new GridPane();
//Setting size for the pane
gridPane.setMinSize(400, 200);
//Setting the padding
gridPane.setPadding(new Insets(10, 10, 10, 10));
//Setting the vertical and horizontal gaps between the columns
gridPane.setVgap(5);
gridPane.setHgap(5);
//Setting the Grid alignment
gridPane.setAlignment(Pos.CENTER);
//Arranging all the nodes in the grid
gridPane.add(text1, 0, 0);
gridPane.add(textField1, 1, 0);
gridPane.add(text2, 0, 1);
gridPane.add(textField2, 1, 1);
gridPane.add(button1, 0, 2);
gridPane.add(button2, 1, 2);
//Styling nodes
button1.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
button2.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
text1.setStyle("-fx-font: normal bold 20px 'serif' ");
text2.setStyle("-fx-font: normal bold 20px 'serif' ");
gridPane.setStyle("-fx-background-color: BEIGE;");
//Creating a scene object
Scene scene = new Scene(gridPane);
//Setting title to the Stage
stage.setTitle("CSS Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac LoginPage.java
java LoginPage
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Aşağıdaki program, JavaFX'teki kontrolleri gösteren bir kayıt formu örneğidir. Date Picker, Radio Button, Toggle Button, Check Box, List View, Choice List, vb.
Bu kodu adıyla bir dosyaya kaydedin Registration.java.
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.ListView;
import javafx.scene.control.RadioButton;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.ToggleButton;
import javafx.stage.Stage;
public class Registration extends Application {
@Override
public void start(Stage stage) {
//Label for name
Text nameLabel = new Text("Name");
//Text field for name
TextField nameText = new TextField();
//Label for date of birth
Text dobLabel = new Text("Date of birth");
//date picker to choose date
DatePicker datePicker = new DatePicker();
//Label for gender
Text genderLabel = new Text("gender");
//Toggle group of radio buttons
ToggleGroup groupGender = new ToggleGroup();
RadioButton maleRadio = new RadioButton("male");
maleRadio.setToggleGroup(groupGender);
RadioButton femaleRadio = new RadioButton("female");
femaleRadio.setToggleGroup(groupGender);
//Label for reservation
Text reservationLabel = new Text("Reservation");
//Toggle button for reservation
ToggleButton Reservation = new ToggleButton();
ToggleButton yes = new ToggleButton("Yes");
ToggleButton no = new ToggleButton("No");
ToggleGroup groupReservation = new ToggleGroup();
yes.setToggleGroup(groupReservation);
no.setToggleGroup(groupReservation);
//Label for technologies known
Text technologiesLabel = new Text("Technologies Known");
//check box for education
CheckBox javaCheckBox = new CheckBox("Java");
javaCheckBox.setIndeterminate(false);
//check box for education
CheckBox dotnetCheckBox = new CheckBox("DotNet");
javaCheckBox.setIndeterminate(false);
//Label for education
Text educationLabel = new Text("Educational qualification");
//list View for educational qualification
ObservableList<String> names = FXCollections.observableArrayList(
"Engineering", "MCA", "MBA", "Graduation", "MTECH", "Mphil", "Phd");
ListView<String> educationListView = new ListView<String>(names);
//Label for location
Text locationLabel = new Text("location");
//Choice box for location
ChoiceBox locationchoiceBox = new ChoiceBox();
locationchoiceBox.getItems().addAll
("Hyderabad", "Chennai", "Delhi", "Mumbai", "Vishakhapatnam");
//Label for register
Button buttonRegister = new Button("Register");
//Creating a Grid Pane
GridPane gridPane = new GridPane();
//Setting size for the pane
gridPane.setMinSize(500, 500);
//Setting the padding
gridPane.setPadding(new Insets(10, 10, 10, 10));
//Setting the vertical and horizontal gaps between the columns
gridPane.setVgap(5);
gridPane.setHgap(5);
//Setting the Grid alignment
gridPane.setAlignment(Pos.CENTER);
//Arranging all the nodes in the grid
gridPane.add(nameLabel, 0, 0);
gridPane.add(nameText, 1, 0);
gridPane.add(dobLabel, 0, 1);
gridPane.add(datePicker, 1, 1);
gridPane.add(genderLabel, 0, 2);
gridPane.add(maleRadio, 1, 2);
gridPane.add(femaleRadio, 2, 2);
gridPane.add(reservationLabel, 0, 3);
gridPane.add(yes, 1, 3);
gridPane.add(no, 2, 3);
gridPane.add(technologiesLabel, 0, 4);
gridPane.add(javaCheckBox, 1, 4);
gridPane.add(dotnetCheckBox, 2, 4);
gridPane.add(educationLabel, 0, 5);
gridPane.add(educationListView, 1, 5);
gridPane.add(locationLabel, 0, 6);
gridPane.add(locationchoiceBox, 1, 6);
gridPane.add(buttonRegister, 2, 8);
//Styling nodes
buttonRegister.setStyle(
"-fx-background-color: darkslateblue; -fx-textfill: white;");
nameLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
dobLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
genderLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
reservationLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
technologiesLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
educationLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
locationLabel.setStyle("-fx-font: normal bold 15px 'serif' ");
//Setting the back ground color
gridPane.setStyle("-fx-background-color: BEIGE;");
//Creating a scene object
Scene scene = new Scene(gridPane);
//Setting title to the Stage
stage.setTitle("Registration Form");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac Registration.java
java Registration
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.
Genel olarak bir grafik, verilerin grafiksel bir temsilidir. Verileri temsil eden çeşitli grafik türleri vardır.Bar Chart, Pie Chart, Line Chart, Scatter Chart, vb.
JavaFX Çeşitli uygulamalar için destek sağlar. Pie Charts ve XY Charts. Bir XY düzleminde temsil edilen grafikler şunları içerir:AreaChart, BarChart, BubbleChart, LineChart, ScatterChart, StackedAreaChart, StackedBarChart, vb.
Her grafik bir sınıfla temsil edilir ve tüm bu grafikler pakete aittir. javafx.scene.chart. Adlı sınıfChart JavaFX'teki tüm grafiklerin temel sınıfıdır ve XYChart XY düzleminde çizilen tüm bu grafiklerin temel sınıfıdır.
Grafik Oluşturma
Bir grafik oluşturmak için yapmanız gerekenler -
- Grafiğin eksenini tanımlayın
- İlgili sınıfı örnekleyin
- Verileri hazırlayın ve grafiğe aktarın
İlgili Sınıfın Örneklenmesi
Bir grafik oluşturmak için, ilgili sınıfını somutlaştırın. Örneğin, bir çizgi grafiği oluşturmak istiyorsanız, adlı sınıfı başlatmanız gerekir.Line aşağıdaki gibi -
LineChart linechart = new LineChart(xAxis, yAxis);
Yukarıdaki kodda görüldüğü gibi, örnekleme sırasında, sırasıyla grafiğin X ve Y eksenini temsil eden iki nesneyi geçmeniz gerekir.
Ekseni Tanımlamak
Genel olarak, grafiklerin ekseni şu şekilde temsil edilebilir:
- Nüfus, Yaş ve
- Haftadaki Günler, Ülkeler gibi Kategoriler.
JavaFX'te eksen, X veya Y eksenini temsil eden soyut bir sınıftır. Her bir eksen türünü tanımlamak için iki alt sınıfı vardır, yaniCategoryAxis ve NumberAxis aşağıdaki diyagramda gösterildiği gibi -
Category Axis- Bu sınıfı başlatarak, her değerin bir kategoriyi temsil ettiği bir X veya Y ekseni tanımlayabilirsiniz (oluşturabilirsiniz). Bu sınıfı aşağıda gösterildiği gibi başlatarak bir Kategori ekseni tanımlayabilirsiniz -
CategoryAxis xAxis = new CategoryAxis();
Bu eksene, kategori listesini ayarlamanız ve eksene aşağıda gösterildiği gibi etiketlemeniz gerekir -
//setting the list of categories.
xAxis.setCategories(FXCollections.<String>observableArrayList
(Arrays.asList("n ame1", "name2"….)));
//Setting label to the axis
xAxis.setLabel("name of the axis ");
NumberAxis- Bu sınıfı somutlaştırarak, boyunca her bir değerin bir Sayısal değeri temsil ettiği bir X veya Y ekseni tanımlayabilirsiniz (oluşturabilirsiniz). Bununla herhangi bir Numara türünü kullanabilirsinizAxis, Long, Double, BigDecimal, vb. Bu sınıfı aşağıdaki gibi başlatarak bir Sayı ekseni tanımlayabilirsiniz -
//Defining the axis
NumberAxis yAxis = new NumberAxis();
//Setting labelto the axis
yAxis.setLabel("name of the axis");
Verileri XY Grafiklerine Aktarma
Tüm XY grafikleri, XY düzlemi boyunca temsil edilir. Bir grafikte bir nokta kümesini çizmek için bir dizi XY koordinatı belirlememiz gerekir.
<X,Y> sınıfı javafx.scene.chartpaket, bir grafiğe veri gönderebileceğiniz bir sınıftır. Bu sınıf, adlandırılmış serilerin gözlemlenebilir bir listesini tutar. Bu listeyi kullanarakgetData() yöntemi XYChart.Series aşağıda gösterildiği gibi sınıf -
ObservableList list = series.getData();
Nerede, series nesnesi XYChart.Seriessınıf. Kullanarak bu listeye veri ekleyebilirsiniz.add() yöntem aşağıdaki gibidir -
list.add(new XYChart.Data(x-axis data, y-axis data));
Bu iki satır aşağıda gösterildiği gibi birlikte yazılabilir -
series.getData().add(new XYChart.Data(x-axis data, y-axis data));
Aşağıdaki tablo, JavaFX tarafından sağlanan çeşitli çizelgelerin (sınıfların) açıklamasını verir -
S.No | Grafik ve Açıklama |
---|---|
1 | Yuvarlak diyagram Pasta grafik, farklı renklere sahip bir dairenin dilimleri olarak değerlerin temsilidir. Bu dilimler etiketlenir ve her bir dilime karşılık gelen değerler grafikte temsil edilir. JavaFX'te, bir pasta grafik adlı bir sınıfla temsil edilir. PieChart. Bu sınıf pakete aittirjavafx.scene.chart. |
2 | Çizgi grafik Çizgi grafiği veya çizgi grafiği, bilgileri düz çizgi parçalarıyla birbirine bağlanan bir dizi veri noktası (işaretçi) olarak görüntüler. Çizgi Grafik, verilerin eşit zaman sıklığında nasıl değiştiğini gösterir. JavaFX'te, çizgi grafiği adlı bir sınıfla temsil edilir. LineChart. Bu sınıf pakete aittirjavafx.scene.chart. Bu sınıfın örneğini oluşturarak, JavaFX'te bir LineChart düğümü oluşturabilirsiniz. |
3 | Alan Grafiği Alan grafikleri, alan tabanlı grafikler çizmek için kullanılır. Verilen nokta serileri ile eksen arasındaki alanı çizer. Genel olarak, bu tablo iki miktarı karşılaştırmak için kullanılır. JavaFX'te, bir Alan grafiği adlı bir sınıfla temsil edilir. AreaChart. Bu sınıf pakete aittirjavafx.scene.chart. Bu sınıfın örneğini oluşturarak, JavaFX'te bir AreaChart düğümü oluşturabilirsiniz. |
4 | Grafik çubuğu Dikdörtgen çubuklar kullanarak gruplanmış verileri temsil etmek için bir çubuk grafik kullanılır. Bu çubukların uzunluğu, değerleri gösterir. Çubuk grafikteki çubuklar dikey veya yatay olarak çizilebilir. JavaFX'te, bir Çubuk grafik adlı bir sınıfla temsil edilir. BarChart. Bu sınıf pakete aittirjavafx.scene.chart. Bu sınıfın örneğini oluşturarak, JavaFX'te bir BarChart düğümü oluşturabilirsiniz. |
5 | Kabarcık Grafiği Üç boyutlu verileri düzenlemek için bir kabarcık grafiği kullanılır. Üçüncü boyut, balonun boyutu (yarıçapı) ile temsil edilecektir. JavaFX'te, Kabarcık grafiği adlı bir sınıfla temsil edilir. BubbleChart. Bu sınıf pakete aittirjavafx.scene.chart. Bu sınıfın örneğini oluşturarak, JavaFX'te bir BubbleChart düğümü oluşturabilirsiniz. |
6 | Dağılım çizelgesi Dağılım grafiği, Kartezyen düzlemde çizilen iki değişkenden gelen değerleri kullanan bir grafik türüdür. Genellikle iki değişken arasındaki ilişkiyi bulmak için kullanılır. JavaFX'te, Dağılım grafiği adlı bir sınıfla temsil edilir. ScatterChart. Bu sınıf pakete aittirjavafx.scene.chart. Bu sınıfın örneğini oluşturarak, JavaFX'te bir ScatterChart düğümü oluşturabilirsiniz. |
7 | Yığılmış Alan Grafiği JavaFX'te, bir Yığın Alan grafiği, adlı bir sınıfla temsil edilir. StackedAreaChart. Bu sınıf pakete aittir javafx.scene.chart. Bu sınıfın örneğini oluşturarak, JavaFX'te bir StackedAreaChart düğümü oluşturabilirsiniz. |
8 | Yığılmış Çubuk Grafik JavaFX'te, bir Yığılmış Çubuk grafiği, StackedBarChart. Bu sınıf pakete aittir javafx.scene.chart. Bu sınıfın örneğini oluşturarak, JavaFX'te bir StackedBarChart düğümü oluşturabilirsiniz. |
Bir sahnede gerekli tüm düğümleri oluşturduktan sonra, bunları genellikle sırayla düzenleyeceğiz.
Kap içindeki bileşenlerin bu düzenlemesine, kabın Düzeni adı verilir. Tüm bileşenleri konteyner içinde belirli bir konuma yerleştirmeyi içeren bir düzen izlediğimizi de söyleyebiliriz.
JavaFX, aşağıdakiler gibi önceden tanımlanmış birkaç düzen sağlar: HBox, VBox, Border Pane, Stack Pane, Text Flow, Anchor Pane, Title Pane, Grid Pane, Flow Panel, vb.
Yukarıda belirtilen düzenlerin her biri bir sınıfla temsil edilir ve tüm bu sınıflar pakete aittir. javafx.layout. Adlı sınıfPane JavaFX'teki tüm düzenlerin temel sınıfıdır.
Bir Düzen Oluşturma
Bir düzen oluşturmak için yapmanız gerekenler -
- Düğüm oluşturun.
- Gerekli düzenin ilgili sınıfını somutlaştırın.
- Düzenin özelliklerini ayarlayın.
- Oluşturulan tüm düğümleri düzene ekleyin.
Düğümler Oluşturma
Öncelikle, ilgili sınıflarını başlatarak JavaFX uygulamasının gerekli düğümlerini oluşturun.
Örneğin, bir metin alanına ve iki düğmeye sahip olmak istiyorsanız, yani bir HBox düzeninde oynat ve durdur - başlangıçta bu düğümleri aşağıdaki kod bloğunda gösterildiği gibi oluşturmanız gerekir -
//Creating a text field
TextField textField = new TextField();
//Creating the play button
Button playButton = new Button("Play");
//Creating the stop button
Button stopButton = new Button("stop");
İlgili Sınıfın Örneklenmesi
Düğümleri oluşturduktan (ve üzerlerindeki tüm işlemleri tamamladıktan sonra), gerekli düzen sınıfını somutlaştırın.
Örneğin, bir Hbox düzeni oluşturmak istiyorsanız, bu sınıfı aşağıdaki gibi başlatmanız gerekir.
HBox hbox = new HBox();
Düzenin Özelliklerini Ayarlama
Sınıfı başlattıktan sonra, ilgili ayarlayıcı yöntemlerini kullanarak mizanpajın özelliklerini ayarlamanız gerekir.
Örneğin - HBox düzeninde oluşturulan düğümler arasında boşluk ayarlamak istiyorsanız, aralık adlı özelliğe değer ayarlamanız gerekir. Bu, ayarlayıcı yöntemi kullanılarak yapılabilirsetSpacing() aşağıda gösterildiği gibi -
hbox.setSpacing(10);
Şekil Nesnesini Gruba Ekleme
Son olarak, şeklin nesnesini aşağıda gösterildiği gibi kurucunun bir parametresi olarak ileterek gruba eklemeniz gerekir.
//Creating a Group object
Group root = new Group(line);
Düzen Bölmeleri
Aşağıda, JavaFX tarafından sağlanan çeşitli Düzen bölmeleri (sınıfları) verilmiştir. Bu sınıflar pakette varjavafx.scene.layout.
S.No | Şekil ve Açıklama |
---|---|
1 | HBox HBox düzeni, uygulamamızdaki tüm düğümleri tek bir yatay sırada düzenler. Adlı sınıf HBox paketin javafx.scene.layout metin yatay kutu düzenini temsil eder. |
2 | VBox VBox düzeni, uygulamamızdaki tüm düğümleri tek bir dikey sütunda düzenler. Adlı sınıf VBox paketin javafx.scene.layout Dikey kutu düzenini temsil eder. |
3 | BorderPane Kenar Bölmesi düzeni, uygulamamızdaki düğümleri üst, sol, sağ, alt ve orta konumlarda düzenler. Adlı sınıf BorderPane paketin javafx.scene.layout kenarlık bölmesi düzenini temsil eder. |
4 | StackPane Yığın bölmesi düzeni, uygulamamızdaki düğümleri tıpkı bir yığındaki gibi diğerinin üzerine düzenler. Önce eklenen düğüm yığının altına yerleştirilir ve sonraki düğüm yığının üstüne yerleştirilir. Adlı sınıf StackPane paketin javafx.scene.layout yığın bölmesi düzenini temsil eder. |
5 | TextFlow Metin Akışı düzeni, tek bir akışta birden çok metin düğümünü düzenler. Adlı sınıf TextFlow paketin javafx.scene.layout metin akışı düzenini temsil eder. |
6 | AnchorPane Bağlantı bölmesi düzeni, uygulamamızdaki düğümleri bölmeden belirli bir mesafede tutturur. Adlı sınıf AnchorPane paketin javafx.scene.layout Bağlantı Bölmesi düzenini temsil eder. |
7 | TilePane Döşeme Bölmesi düzeni, uygulamamızın tüm düğümlerini eşit boyutta döşemeler şeklinde ekler. Adlı sınıf TilePane paketin javafx.scene.layout TilePane düzenini temsil eder. |
8 | GridPane Izgara Bölmesi düzeni, uygulamamızdaki düğümleri satır ve sütunlardan oluşan bir ızgara olarak düzenler. Bu düzen, JavaFX kullanarak formlar oluştururken kullanışlıdır. Adlı sınıf GridPane paketin javafx.scene.layout GridPane düzenini temsil eder. |
9 | FlowPane Akış bölmesi düzeni, bir akıştaki tüm düğümleri sarar. Yatay bir akış bölmesi, bölmenin öğelerini yüksekliğinde sararken, dikey bir akış bölmesi, öğeleri genişliğinde sarar. Adlı sınıf FlowPane paketin javafx.scene.layout Akış Bölmesi düzenini temsil eder. |
Cascading Style SheetsCSS olarak da anılan, web sayfalarını sunum yapılabilir hale getirme sürecini basitleştirmeyi amaçlayan basit bir tasarım dili.
CSS, bir web sayfasının görünümünü ve hissini işler. CSS kullanarak metnin rengini, yazı tiplerinin stilini, paragraflar arasındaki boşlukları, sütunların boyutunu ve düzeni kontrol edebilirsiniz. Bunların dışında, kullanılan arka plan görüntülerini veya renkleri, düzen tasarımlarını, farklı cihazlar ve ekran boyutları için ekrandaki varyasyonları ve çeşitli diğer efektleri de kontrol edebilirsiniz.
JavaFX'te CSS
JavaFX, uygulamanın görünümünü ve verdiği hissi geliştirmek için CSS kullanma olanağı sağlar. Paketjavafx.css JavaFX uygulamaları için CSS uygulamak için kullanılan sınıfları içerir.
Bir CSS, tarayıcı tarafından yorumlanan ve ardından belgenizdeki karşılık gelen öğelere uygulanan stil kurallarından oluşur.
Bir stil kuralı şu üç bölümden oluşur:
Selector- Bir seçici, bir stilin uygulanacağı bir HTML etiketidir. Bu herhangi bir etiket olabilir<h1> veya <table>, vb.
Property- Özellik, HTML etiketinin bir öznitelik türüdür. Daha basit bir ifadeyle, tüm HTML nitelikleri CSS özelliklerine dönüştürülür. Renkli olabilirlerborder, vb.
Value- Değerler mülklere atanır. Örneğin, bir renk özelliğinin değeri olabilir.red veya #F1F1F1, vb.
CSS Stil Kuralı Sözdizimini aşağıdaki gibi koyabilirsiniz -
selector { property: value }
JavaFX tarafından kullanılan varsayılan stil sayfası modena.css. JavaFX çalışma zamanı kavanozunda bulunur.
Kendi Stil Sayfanızı Eklemek
JavaFX'te bir sahneye aşağıdaki şekilde kendi stil sayfanızı ekleyebilirsiniz -
Scene scene = new Scene(new Group(), 500, 400);
scene.getStylesheets().add("path/stylesheet.css");
Satır İçi Stil Sayfaları Ekleme
Ayrıca satır içi stilleri de ekleyebilirsiniz. setStyle()yöntem. Bu stiller yalnızca anahtar / değer çiftlerinden oluşur ve ayarlandıkları düğümler için geçerlidir. Aşağıda, bir satır içi stil sayfasını bir düğmeye ayarlamanın örnek bir kodu verilmiştir.
.button {
-fx-background-color: red;
-fx-text-fill: white;
}
Misal
Metin Alanı, Şifre Alanı, İki Düğme içeren bir form görüntüleyen bir JavaFX uygulaması geliştirdiğimizi varsayalım. Varsayılan olarak, bu form aşağıdaki ekran görüntüsünde gösterildiği gibi görünür -
Aşağıdaki program, JavaFX'te yukarıdaki uygulamaya nasıl stil ekleneceğini gösteren bir örnektir.
Bu kodu adıyla bir dosyaya kaydedin CssExample.java
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class CssExample extends Application {
@Override
public void start(Stage stage) {
//creating label email
Text text1 = new Text("Email");
//creating label password
Text text2 = new Text("Password");
//Creating Text Filed for email
TextField textField1 = new TextField();
//Creating Text Filed for password
PasswordField textField2 = new PasswordField();
//Creating Buttons
Button button1 = new Button("Submit");
Button button2 = new Button("Clear");
//Creating a Grid Pane
GridPane gridPane = new GridPane();
//Setting size for the pane
gridPane.setMinSize(400, 200);
//Setting the padding
gridPane.setPadding(new Insets(10, 10, 10, 10));
//Setting the vertical and horizontal gaps between the columns
gridPane.setVgap(5);
gridPane.setHgap(5);
//Setting the Grid alignment
gridPane.setAlignment(Pos.CENTER);
//Arranging all the nodes in the grid
gridPane.add(text1, 0, 0);
gridPane.add(textField1, 1, 0);
gridPane.add(text2, 0, 1);
gridPane.add(textField2, 1, 1);
gridPane.add(button1, 0, 2);
gridPane.add(button2, 1, 2);
//Styling nodes
button1.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
button2.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
text1.setStyle("-fx-font: normal bold 20px 'serif' ");
text2.setStyle("-fx-font: normal bold 20px 'serif' ");
gridPane.setStyle("-fx-background-color: BEIGE;");
// Creating a scene object
Scene scene = new Scene(gridPane);
// Setting title to the Stage
stage.setTitle("CSS Example");
// Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün.
javac CssExample.java
java CssExample
Yürütüldüğünde, yukarıdaki program aşağıda gösterildiği gibi bir JavaFX penceresi oluşturur.