JavaFX - Panduan Cepat
Rich Internet Applicationsadalah aplikasi web yang menyediakan fitur dan pengalaman serupa dengan aplikasi desktop. Mereka menawarkan pengalaman visual yang lebih baik jika dibandingkan dengan aplikasi web biasa kepada pengguna. Aplikasi ini dikirimkan sebagai plugin browser atau sebagai mesin virtual dan digunakan untuk mengubah aplikasi statis tradisional menjadi aplikasi yang lebih canggih, lancar, beranimasi, dan menarik.
Tidak seperti aplikasi desktop tradisional, RIA tidak memerlukan perangkat lunak tambahan untuk dijalankan. Sebagai alternatif, Anda harus menginstal perangkat lunak seperti ActiveX, Java, Flash, tergantung pada Aplikasinya.
Dalam RIA, presentasi grafis ditangani di sisi klien, karena memiliki plugin yang menyediakan dukungan untuk grafis yang kaya. Singkatnya, manipulasi data dalam RIA dilakukan di sisi server, sedangkan manipulasi objek terkait dilakukan di sisi klien.
Kami memiliki tiga teknologi utama yang dapat digunakan untuk mengembangkan RIA. Ini termasuk yang berikut -
- Adobe Flash
- Microsoft Silverlight
- JavaFX
Adobe Flash
Platform perangkat lunak ini dikembangkan oleh Adobe Systems dan digunakan dalam membuat Aplikasi Internet yang Kaya. Bersamaan dengan ini, Anda juga dapat membangun Aplikasi lain seperti Vektor, Animasi, Game Browser, Aplikasi Desktop, Aplikasi dan Game Seluler, dll.
Ini adalah platform yang paling umum digunakan untuk mengembangkan dan menjalankan RIA dengan tingkat penetrasi browser desktop 96%.
Microsoft Silverlight
Sama seperti Adobe flash, Microsoft Silverlight juga merupakan kerangka aplikasi perangkat lunak untuk mengembangkan serta menjalankan Aplikasi Internet Kaya. Awalnya framework ini digunakan untuk media streaming. Versi sekarang mendukung multimedia, grafik, dan animasi juga.
Platform ini jarang digunakan dengan tingkat penetrasi browser desktop 66%.
JavaFX
JavaFX adalah pustaka Java yang dapat digunakan untuk mengembangkan Rich Internet Applications. Dengan menggunakan teknologi Java, aplikasi ini memiliki tingkat penetrasi browser sebesar 76%.
Apa itu JavaFX?
JavaFX adalah pustaka Java yang digunakan untuk membangun Aplikasi Rich Internet. Aplikasi yang ditulis menggunakan pustaka ini dapat berjalan secara konsisten di berbagai platform. Aplikasi yang dikembangkan menggunakan JavaFX dapat berjalan di berbagai perangkat seperti Komputer Desktop, Ponsel, TV, Tablet, dll.
Mengembangkan GUI Applications menggunakan bahasa pemrograman Java, programmer mengandalkan perpustakaan seperti Advanced Windowing Toolkit dan Swing. Setelah munculnya JavaFX, programmer Java ini sekarang dapat mengembangkan aplikasi GUI secara efektif dengan konten yang kaya.
Kebutuhan JavaFX
Mengembangkan Client Side Applicationsdengan fitur yang kaya, programmer biasanya bergantung pada berbagai pustaka untuk menambahkan fitur seperti Media, kontrol UI, Web, 2D dan 3D, dll. JavaFX menyertakan semua fitur ini dalam satu pustaka. Selain itu, pengembang juga dapat mengakses fitur perpustakaan Java sepertiSwing.
JavaFX menyediakan kumpulan grafik dan API media yang kaya dan memanfaatkan modern Graphical Processing Unitmelalui grafis yang dipercepat perangkat keras. JavaFX juga menyediakan antarmuka yang dapat digunakan pengembang untuk menggabungkan animasi grafis dan kontrol UI.
Seseorang dapat menggunakan JavaFX dengan teknologi berbasis JVM seperti Java, Groovy dan JRuby. Jika pengembang memilih JavaFX, tidak perlu mempelajari teknologi tambahan, karena pengetahuan sebelumnya tentang teknologi yang disebutkan di atas akan cukup baik untuk mengembangkan RIA menggunakan JavaFX.
Fitur JavaFX
Berikut adalah beberapa fitur penting JavaFX -
Written in Java - Pustaka JavaFX ditulis dalam Java dan tersedia untuk bahasa yang dapat dijalankan pada JVM, yang meliputi - Java, Groovy and JRuby. Aplikasi JavaFX ini juga tidak bergantung pada platform.
FXML- JavaFX menampilkan bahasa yang dikenal sebagai FXML, yang merupakan HTML seperti bahasa markup deklaratif. Satu-satunya tujuan dari bahasa ini adalah untuk menentukan Antarmuka pengguna.
Scene Builder- JavaFX menyediakan aplikasi bernama Scene Builder. Saat mengintegrasikan aplikasi ini dalam IDE seperti Eclipse dan NetBeans, pengguna dapat mengakses antarmuka desain drag and drop, yang digunakan untuk mengembangkan aplikasi FXML (seperti Swing Drag & Drop dan Aplikasi DreamWeaver).
Swing Interoperability - Dalam aplikasi JavaFX, Anda dapat menyematkan konten Swing menggunakan Swing Nodekelas. Demikian pula, Anda dapat memperbarui aplikasi Swing yang ada dengan fitur JavaFX seperti konten web tertanam dan media grafik yang kaya.
Built-in UI controls - Pustaka JavaFX melayani kontrol UI yang dengannya kita dapat mengembangkan aplikasi berfitur lengkap.
CSS like Styling- JavaFX menyediakan gaya seperti CSS. Dengan menggunakan ini, Anda dapat meningkatkan desain aplikasi Anda dengan pengetahuan sederhana tentang CSS.
Canvas and Printing API- JavaFX menyediakan Canvas, gaya mode langsung untuk rendering API. Di dalam paketjavafx.scene.canvasitu memegang satu set kelas untuk kanvas, yang dengannya kita bisa menggambar langsung di dalam area scene JavaFX. JavaFX juga menyediakan kelas untuk tujuan Pencetakan dalam paketnyajavafx.print.
Rich set of API’s- Pustaka JavaFX menyediakan sekumpulan API yang kaya untuk mengembangkan aplikasi GUI, grafik 2D dan 3D, dll. Kumpulan API ini juga mencakup kemampuan platform Java. Oleh karena itu, dengan menggunakan API ini, Anda dapat mengakses fitur bahasa Java seperti Generics, Annotations, Multithreading, dan Lambda Expressions. Pustaka Koleksi Java tradisional ditingkatkan dan konsep seperti daftar dan peta yang dapat diamati dimasukkan di dalamnya. Dengan menggunakan ini, pengguna dapat mengamati perubahan dalam model data.
Integrated Graphics library - JavaFX menyediakan kelas untuk 2d dan 3d grafis.
Graphics pipeline- JavaFX mendukung grafik berdasarkan pipeline grafik yang dipercepat perangkat keras yang dikenal sebagai Prism. Saat digunakan dengan Kartu Grafis atau GPU yang didukung, ia menawarkan grafis yang halus. Jika sistem tidak mendukung kartu grafis maka prisma default ke tumpukan rendering perangkat lunak.
Sejarah JavaFX
JavaFX awalnya dikembangkan oleh Chris Oliver, saat dia bekerja untuk sebuah perusahaan bernama See Beyond Technology Corporation, yang kemudian diakuisisi oleh Sun Microsystems di tahun 2005.
Poin-poin berikut memberi kami lebih banyak informasi tentang proyek ini -
Awalnya proyek ini bernama F3 (Form Follows Functions) dan itu dikembangkan dengan maksud untuk menyediakan antarmuka yang lebih kaya untuk mengembangkan Aplikasi GUI.
Sun Microsystems mengakuisisi perusahaan See Beyond pada bulan Juni 2005, ia mengadaptasi proyek F3 sebagai JavaFX.
Pada tahun 2007, JavaFX diumumkan secara resmi di Java One, konferensi web di seluruh dunia yang diadakan setiap tahun.
Di tahun 2008, Net Beansterintegrasi dengan JavaFX telah tersedia. Di tahun yang sama, Pulau JawaStandard Development Kit untuk JavaFX 1.0 dirilis.
Pada tahun 2009, Oracle Corporation mengakuisisi Sun Microsystems dan pada tahun yang sama versi JavaFX berikutnya (1.2) juga dirilis.
Di tahun 2010, JavaFX 1.3 keluar dan di tahun 2011 JavaFX 2.0 dirilis.
Versi terbaru, JavaFX8, dirilis sebagai bagian integral dari Java pada tanggal 18 Maret 2014.
Dari Java8 dan seterusnya, JDK (Java Development Kit) termasuk JavaFXperpustakaan di dalamnya. Oleh karena itu, untuk menjalankan aplikasi JavaFX, Anda hanya perlu menginstal Java8 atau versi yang lebih baru di sistem Anda.
Selain itu, IDE seperti Eclipse dan NetBeans menyediakan dukungan untuk JavaFX. Bab ini mengajarkan Anda cara mengatur lingkungan untuk menjalankan Aplikasi JavaFX dengan berbagai cara.
Menginstal Java8
Pertama-tama, Anda harus memverifikasi apakah ada Java yang Terinstal di sistem Anda atau tidak dengan membuka command prompt dan mengetikkan perintah "Java" di dalamnya.
Jika Anda belum menginstal Java di sistem Anda, prompt perintah akan menampilkan pesan yang ditampilkan di tangkapan layar berikut.
Kemudian instal Java dengan mengikuti langkah-langkah yang diberikan di bawah ini.
Step 1- Kunjungi Halaman Unduhan JavaSE , klik JDKDownload tombol seperti yang disorot pada tangkapan layar berikut
Step 2 - Saat mengklik tombol Unduh, Anda akan diarahkan ke Java SE Development Kit 8 Downloadshalaman. Halaman ini memberi Anda tautan JDK untuk berbagai platform.
Terima perjanjian lisensi dan unduh perangkat lunak yang diperlukan dengan mengklik tautannya masing-masing.
Misalnya, jika Anda bekerja pada Sistem Operasi windows 64-bit maka Anda perlu mengunduh versi JDK yang disorot pada tangkapan layar berikut.
Saat mengklik tautan yang disorot, Java8 Development Kit yang sesuai untuk Sistem Operasi Windows 64-bit akan diunduh ke sistem Anda.
Step 3 - Jalankan file eksekusi biner yang diunduh untuk memulai penginstalan JDK8.
Step 4 - Pilih Direktori Instalasi.
Step 5 - Saat memilih folder tujuan dan mengklik Berikutnya, proses instalasi JavaFX mulai menampilkan bilah kemajuan seperti yang ditunjukkan pada gambar layar berikut.
Step 6 - Ubah direktori instalasi jika perlu, jika tidak, pertahankan yang default dan lanjutkan lebih jauh.
Step 7 - Selesaikan proses instalasi dengan mengklik tombol Tutup seperti yang ditunjukkan pada gambar berikut.
Menyiapkan Path untuk Windows
Setelah menginstal Java, Anda perlu mengatur variabel path. Asumsikan bahwa Anda telah menginstal Java diC:\Program Files\java\jdk1.8.0_91direktori.
Sekarang Anda dapat mengikuti langkah-langkah yang diberikan di bawah ini -
Klik kanan pada 'My Computer' dan pilih 'Properties'.
Klik tombol 'Variabel Lingkungan' di bawah tab 'Lanjutan'.
Sekarang, ubah variabel 'Path' sehingga juga berisi path ke Java yang dapat dieksekusi. Misalnya, jika jalur saat ini disetel ke 'C: \ WINDOWS \ SYSTEM32', ubah jalur Anda menjadi 'C: \ WINDOWS \ SYSTEM32; C: \ Program Files \ java \ jdk1.8.0_91 \ bin '.
Mengatur Lingkungan NetBeans dari JavaFX
NetBeans8menyediakan dukungan bawaan untuk JavaFX. Saat menginstal ini, Anda dapat membuat aplikasi JavaFX tanpa plugin tambahan atau file JAR. Untuk mengatur lingkungan NetBeans, Anda harus mengikuti langkah-langkah yang diberikan di bawah ini.
Step 1- Kunjungi situs web NetBeans situs web NetBeans dan klik tombol Unduh untuk mengunduh perangkat lunak NetBeans.
Step 2 - Saat mengklik Download, Anda akan masuk ke halaman Download dari perangkat lunak NetBeans, yang menyediakan bundel NetBeans untuk berbagai aplikasi Java. Unduh perangkat lunak NetBeans untukJavaSE seperti yang ditunjukkan pada tangkapan layar berikut.
Step 3 - Saat mengklik tombol ini, sebuah file bernama netbeans-8.0-windows.exe akan diunduh ke sistem Anda. Jalankan file ini untuk menginstalnya. Saat menjalankan file ini, penginstal NetBeans akan mulai seperti yang ditunjukkan pada gambar berikut.
Setelah menyelesaikan konfigurasi, Anda akan melihat file Welcome Page of the installer.
Step 4 - Klik tombol Berikutnya dan lanjutkan dengan penginstalan.
Step 5 - Jendela berikutnya memegang NETBEANS IDE 8.0 license agreement. Bacalah dengan seksama dan setujui perjanjian dengan mencentang kotak di "Saya menerima persyaratan dalam perjanjian lisensi" dan kemudian klikNext tombol.
Step 6 - Di jendela berikutnya, Anda akan menemukan perjanjian lisensi untuk Junit, terima dengan memilih tombol radio di "Saya menerima persyaratan dalam perjanjian lisensi, Instal JUnit" dan klik Next.
Step 7- Pilih direktori tujuan tempat Anda membutuhkan Netbeans 8.0 untuk diinstal. Selanjutnya, Anda juga dapat menelusuri direktori tempatJava Development Kit diinstal di sistem Anda dan klik Next tombol.
Step 8 - Demikian pula, pilih direktori tujuan untuk Glassfish Serverinstalasi. Jelajahi direktori Java Development Kit (sekarang untuk Glassfish Reference) dan kemudian klikNext.
Step 9 - Periksa Check for Updates kotak untuk pembaruan otomatis dan klik tombol Instal untuk memulai penginstalan.
Step 10 - Langkah ini memulai penginstalan NetBeans IDE 8.0 dan mungkin memerlukan beberapa saat.
Step 11 - Setelah proses selesai, klik Finish tombol untuk menyelesaikan penginstalan.
Step 12 - Setelah Anda meluncurkan NetBeans IDE, Anda akan melihat halaman awal seperti yang ditunjukkan pada gambar layar berikut.
Step 13 - Di menu file, pilih New Project… Untuk membuka wizard Proyek baru seperti yang ditunjukkan pada tangkapan layar berikut.
Step 14 - Di New Project wizard, pilih JavaFX dan klik Next. Ini mulai membuat Aplikasi JavaFX baru untuk Anda.
Step 15 - Pilih nama proyek dan lokasi proyek di NewJavaFX Application jendela dan kemudian klik Finish. Ini membuat aplikasi sampel dengan nama yang diberikan.
Dalam contoh ini, aplikasi dengan nama javafxsampledibuat. Di dalam aplikasi ini, NetBeans IDE akan menghasilkan program Java dengan namaJavafxsample.java. Seperti yang ditunjukkan pada gambar berikut, program ini akan dibuat di dalam Paket Sumber NetBeans→ javafxsample.
Step 16 - Klik kanan pada file dan pilih Run File untuk menjalankan kode ini seperti yang ditunjukkan pada tangkapan layar berikut.
Program yang dibuat secara otomatis ini berisi kode yang menghasilkan jendela JavaFX sederhana yang memiliki tombol dengan label Say ‘Hello World’di dalamnya. Setiap kali Anda mengklik tombol ini, stringnyaHello World akan ditampilkan di konsol seperti yang ditunjukkan di bawah ini.
Menginstal JavaFX di Eclipse
Sebuah plugin bernama e(fx)clipse juga tersedia di JavaFX. Anda dapat menggunakan langkah-langkah berikut untuk mengatur JavaFX di Eclipse. Pertama-tama, pastikan Anda memiliki Eclipse di sistem Anda. Jika tidak, unduh dan instal Eclipse di sistem Anda.
Setelah Eclipse diinstal, ikuti langkah-langkah yang diberikan di bawah ini untuk menginstal e(fx)clipse di sistem Anda.
Step 1 - Buka Eclipse di Help menu dan pilih Install New Software… Pilihan seperti yang ditunjukkan di bawah ini.
Setelah mengklik, itu akan menampilkan Available Software jendela, seperti yang ditunjukkan pada tangkapan layar berikut.
Di kotak teks Work with dari jendela ini, Anda perlu memberikan tautan plugin untuk perangkat lunak yang diperlukan.
Step 2 - Klik Add… Tombol. Berikan nama plugin sebagaie(fx)clipse. Selanjutnya, Sediakan tautan berikut sebagai lokasi.http://download.eclipse.org/efxclipse/updates-released/2.3.0/site/
Step 3 - Setelah menentukan nama dan lokasi plugin, klik tombol OK, seperti yang disorot pada tangkapan layar berikut.
Step 4 - Segera setelah Anda menambahkan plugin, Anda akan menemukan dua kotak centang untuk e(fx)clipse – install dan e(fx)clipse – single components. Centang kedua kotak centang ini dan klikAdd… Seperti yang ditunjukkan pada tangkapan layar berikut.
Step 5- Selanjutnya, buka IDE Eclipse Anda. Klik menu File dan pilih Project seperti yang ditunjukkan pada gambar layar berikut.
Step 6- Kemudian, Anda akan mendapatkan jendela di mana Anda dapat melihat daftar penyihir yang disediakan oleh Eclipse untuk membuat proyek. Perluas fileJavaFX wizard, pilih JavaFX Project dan klik Next tombol seperti yang ditunjukkan pada tangkapan layar berikut.
Step 7 - Saat mengklik Next, Wisaya Proyek Baru terbuka. Di sini, Anda dapat mengetik nama proyek yang diperlukan dan klikFinish.
Step 8- Saat mengklik Selesai, aplikasi dibuat dengan nama yang diberikan (sampel). Di sub-paket bernamaapplication, sebuah program dengan nama Main.java dihasilkan seperti yang ditunjukkan di bawah ini.
Step 9- Program yang dibuat secara otomatis ini berisi kode untuk menghasilkan jendela JavaFX kosong. Klik kanan pada file ini, pilihRun As → Java Application seperti yang ditunjukkan pada tangkapan layar berikut.
Saat menjalankan aplikasi ini, ini memberi Anda jendela JavaFX kosong seperti yang ditunjukkan di bawah ini.
Note - Kami akan membahas lebih lanjut tentang kode di bab-bab selanjutnya.
JavaFX menyediakan API lengkap dengan sekumpulan kelas dan antarmuka yang kaya untuk membangun aplikasi GUI dengan grafik yang kaya. Paket penting dari API ini adalah -
javafx.animation - Berisi kelas untuk menambahkan animasi berbasis transisi seperti fill, fade, rotate, scale dan translation, ke node JavaFX.
javafx.application - Berisi sekumpulan kelas yang bertanggung jawab atas siklus hidup aplikasi JavaFX.
javafx.css - Berisi kelas untuk menambahkan gaya seperti CSS ke aplikasi JavaFX GUI.
javafx.event - Berisi kelas dan antarmuka untuk menyampaikan dan menangani acara JavaFX.
javafx.geometry - Berisi kelas untuk mendefinisikan objek 2D dan melakukan operasi padanya.
javafx.stage - Paket ini menampung kelas kontainer tingkat atas untuk aplikasi JavaFX.
javafx.scene- Paket ini menyediakan kelas dan antarmuka untuk mendukung grafik pemandangan. Selain itu, ia juga menyediakan sub-paket seperti canvas, chart, control, effect, image, input, layout, media, paint, shape, text, transform, web, dll. Ada beberapa komponen yang mendukung API kaya JavaFX ini. .
Ilustrasi berikut menunjukkan arsitektur JavaFX API. Di sini Anda dapat melihat komponen-komponen yang mendukung JavaFX API.
Grafik Pemandangan
Di JavaFX, Aplikasi GUI dikodekan menggunakan Scene Graph. Sebuah Grafik Pemandangan adalah titik awal pembangunan Aplikasi GUI. Ini memegang aplikasi primitif (GUI) yang disebut sebagai node.
Node adalah objek visual / grafis dan mungkin termasuk -
Geometrical (Graphical) objects - (2D dan 3D) seperti lingkaran, persegi panjang, poligon, dll.
UI controls - seperti Tombol, Kotak Centang, Kotak Pilihan, Area Teks, dll.
Containers - (panel tata letak) seperti Border Pane, Grid Pane, Flow Pane, dll.
Media elements - seperti objek audio, video dan gambar.
Secara umum, kumpulan node membuat grafik pemandangan. Semua node ini disusun dalam urutan hierarki seperti yang ditunjukkan di bawah ini.
Setiap node dalam grafik adegan memiliki satu orang tua, dan node yang tidak berisi orang tua disebut sebagai root node.
Dengan cara yang sama, setiap node memiliki satu atau lebih anak, dan node tanpa anak disebut sebagai leaf node; simpul dengan anak-anak disebut sebagaibranch node.
Sebuah contoh node dapat ditambahkan ke grafik pemandangan hanya sekali. Node grafik pemandangan dapat memiliki Efek, Opasitas, Transformasi, Penanganan Acara, Penangan Acara, Status Khusus Aplikasi.
Prisma
Prisma adalah a high performance hardware–accelerated graphical pipelineyang digunakan untuk merender grafik di JavaFX. Itu dapat membuat grafik 2-D dan 3-D.
Untuk membuat grafik, Prism menggunakan -
- DirectX 9 pada Windows XP dan Vista.
- DirectX 11 di Windows 7.
- OpenGL di Mac dan Linux, Sistem Tertanam.
Jika dukungan perangkat keras untuk grafik pada sistem tidak mencukupi, maka Prism menggunakan jalur render perangkat lunak untuk memproses grafik.
Saat digunakan dengan Kartu Grafis atau GPU yang didukung, ini menawarkan grafis yang lebih halus. Untuk berjaga-jaga jika sistem tidak mendukung kartu grafis, maka Prism default ke tumpukan rendering perangkat lunak (salah satu dari dua di atas).
GWT (Toolkit Jendela Kaca)
Seperti namanya, GWT menyediakan layanan untuk mengelola Windows, Timer, Surfaces, dan Event Queues. GWT menghubungkan Platform JavaFX ke Sistem Operasi Native.
Perangkat Kuantum
Ini adalah abstraksi atas komponen tingkat rendah Prism, Glass, Media Engine, dan Web Engine. Ini mengikat Prism dan GWT bersama dan membuatnya tersedia untuk JavaFX.
WebView
Menggunakan JavaFX, Anda juga dapat menyematkan konten HTML ke grafik pemandangan. WebView adalah komponen JavaFX yang digunakan untuk memproses konten ini. Ini menggunakan teknologi yang disebutWeb Kit, yang merupakan mesin browser web sumber terbuka internal. Komponen ini mendukung berbagai teknologi web seperti HTML5, CSS, JavaScript, DOM dan SVG.
Menggunakan WebView, Anda dapat -
- Render konten HTML dari URL lokal atau jarak jauh.
- Mendukung riwayat dan menyediakan navigasi Mundur dan Maju.
- Muat ulang konten.
- Menerapkan efek ke komponen web.
- Edit konten HTML.
- Jalankan perintah JavaScript.
- Tangani acara.
Secara umum, menggunakan WebView, Anda dapat mengontrol konten web dari Java.
Mesin Media
Itu JavaFX media engine didasarkan pada mesin sumber terbuka yang dikenal sebagai Streamer. Mesin media ini mendukung pemutaran konten video dan audio.
Mesin media JavaFX menyediakan dukungan untuk audio untuk format file berikut -
Audio |
|
---|---|
Video |
|
Paket javafx.scene.mediaberisi kelas dan antarmuka untuk menyediakan fungsionalitas media di JavaFX. Ini disediakan dalam bentuk tiga komponen, yaitu -
Media Object - Ini mewakili file media
Media Player - Untuk memutar konten media.
Media View - Untuk menampilkan media.
Pada bab ini kita akan membahas tentang struktur aplikasi JavaFX secara detail dan juga belajar membuat aplikasi JavaFX dengan contohnya.
Struktur Aplikasi JavaFX
Secara umum, aplikasi JavaFX memiliki tiga komponen utama yaitu Stage, Scene dan Nodes seperti yang ditunjukkan pada diagram berikut.
Tahap
Dekor (jendela) berisi semua objek aplikasi JavaFX. Itu diwakili olehStage kelas paket javafx.stage. Panggung utama dibuat oleh platform itu sendiri. Objek panggung yang dibuat diteruskan sebagai argumen kestart() metode dari Application kelas (dijelaskan di bagian selanjutnya).
Sebuah panggung memiliki dua parameter yang menentukan posisinya yaitu Width dan Height. Ini dibagi sebagai Area Konten dan Dekorasi (Bar Judul dan Batas).
Ada lima jenis tahapan yang tersedia -
- Decorated
- Undecorated
- Transparent
- Unified
- Utility
Anda harus menelepon show() metode untuk menampilkan isi panggung.
Tempat kejadian
Adegan merepresentasikan konten fisik dari aplikasi JavaFX. Ini berisi semua konten grafik adegan. KelasScene dari paket javafx.scenemewakili objek adegan. Misalnya, objek adegan ditambahkan hanya ke satu panggung.
Anda dapat membuat adegan dengan membuat instance Kelas Pemandangan. Anda dapat memilih ukuran pemandangan dengan meneruskan dimensinya (tinggi dan lebar) bersama denganroot node ke konstruktornya.
Grafik Pemandangan dan Node
SEBUAH scene graphadalah struktur data seperti pohon (hierarki) yang mewakili isi dari sebuah adegan. Sebaliknya, anode adalah objek visual / grafis dari grafik pemandangan.
Node mungkin termasuk -
Objek geometris (Grafis) (2D dan 3D) seperti - Lingkaran, Persegi Panjang, Poligon, dll.
Kontrol UI seperti - Tombol, Kotak Centang, Kotak Pilihan, Area Teks, dll.
Container (Layout Panes) seperti Border Pane, Grid Pane, Flow Pane, dll.
Elemen media seperti Audio, Video dan Objek Gambar.
Itu Node Kelas paket javafx.scene mewakili sebuah node di JavaFX, kelas ini adalah kelas super dari semua node.
Seperti yang dibahas sebelumnya, node terdiri dari tiga jenis -
Root Node - Grafik Pemandangan pertama dikenal sebagai simpul Root.
Branch Node/Parent Node- Simpul dengan simpul anak dikenal sebagai simpul cabang / induk. Kelas abstrak bernamaParent dari paket javafx.scene adalah kelas dasar dari semua node induk, dan node induk tersebut akan menjadi tipe berikut -
Group- Node grup adalah node kolektif yang berisi daftar node anak. Setiap kali node grup dirender, semua node turunannya dirender secara berurutan. Setiap transformasi, status efek yang diterapkan pada grup akan diterapkan ke semua node turunan.
Region - Ini adalah kelas dasar dari semua Kontrol UI berbasis JavaFX Node, seperti Chart, Pane dan Control.
WebView - Node ini mengelola mesin web dan menampilkan isinya.
Leaf Node- Node tanpa node turunan dikenal sebagai node daun. Misalnya, Rectangle, Ellipse, Box, ImageView, MediaView adalah contoh node daun.
Ini wajib untuk meneruskan simpul akar ke grafik pemandangan. Jika Grup diteruskan sebagai root, semua node akan dipotong ke tempat kejadian dan perubahan apa pun dalam ukuran pemandangan tidak akan memengaruhi tata letak pemandangan.
Membuat Aplikasi JavaFX
Untuk membuat aplikasi JavaFX, Anda perlu membuat instance kelas Aplikasi dan mengimplementasikan metode abstraknya start(). Dalam metode ini, kami akan menulis kode untuk Aplikasi JavaFX.
Kelas Aplikasi
Itu Application kelas paket javafx.applicationadalah titik masuk aplikasi di JavaFX. Untuk membuat aplikasi JavaFX, Anda perlu mewarisi kelas ini dan mengimplementasikan metode abstraknyastart(). Dalam metode ini, Anda perlu menulis seluruh kode untuk grafik JavaFX
Dalam main metode, Anda harus meluncurkan aplikasi menggunakan launch()metode. Metode ini secara internal memanggilstart() metode kelas Aplikasi seperti yang ditunjukkan pada program berikut.
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);
}
}
Dalam start() metode, untuk membuat aplikasi JavaFX yang khas, Anda harus mengikuti langkah-langkah yang diberikan di bawah ini -
Siapkan grafik adegan dengan node yang dibutuhkan.
Siapkan Scene dengan dimensi yang diperlukan dan tambahkan grafik scene (node root grafik scene) ke dalamnya.
Siapkan panggung dan tambahkan adegan ke panggung dan tampilkan isi panggung.
Mempersiapkan Grafik Pemandangan
Sesuai aplikasi Anda, Anda perlu menyiapkan grafik adegan dengan node yang diperlukan. Karena simpul akar adalah simpul pertama, Anda perlu membuat simpul akar. Sebagai simpul akar, Anda dapat memilih dariGroup, Region or WebView.
Group - Node grup diwakili oleh kelas bernama Group yang termasuk dalam paket javafx.scene, Anda dapat membuat node Grup dengan membuat instance kelas ini seperti yang ditunjukkan di bawah ini.
Group root = new Group();
Itu getChildren() metode dari Group kelas memberi Anda sebuah objek dari ObservableListkelas yang menyimpan node. Kita dapat mengambil objek ini dan menambahkan node padanya seperti yang ditunjukkan di bawah ini.
//Retrieving the observable list object
ObservableList list = root.getChildren();
//Setting the text object as a node
list.add(NodeObject);
Kita juga bisa menambahkan objek Node ke grup, hanya dengan meneruskannya ke Group kelas dan konstruktornya pada saat pembuatan, seperti yang ditunjukkan di bawah ini.
Group root = new Group(NodeObject);
Region - Ini adalah kelas Basis dari semua Kontrol UI berbasis JavaFX Node, seperti -
Chart - Kelas ini adalah kelas dasar dari semua grafik dan termasuk dalam paket javafx.scene.chart.
Kelas ini memiliki dua sub kelas, yaitu - PieChart dan XYChart. Keduanya pada gilirannya memiliki subclass sepertiAreaChart, BarChart, BubbleChart, dll. digunakan untuk menggambar berbagai jenis XY-Plane Charts di JavaFX.
Anda dapat menggunakan kelas-kelas ini untuk menyematkan bagan di aplikasi Anda.
Pane - Panel adalah kelas dasar dari semua panel tata letak seperti AnchorPane, BorderPane, DialogPane, dll. Kelas ini termasuk dalam paket yang disebut - javafx.scene.layout.
Anda dapat menggunakan kelas-kelas ini untuk menyisipkan tata letak yang telah ditentukan sebelumnya dalam aplikasi Anda.
Control - Ini adalah kelas dasar dari kontrol Antarmuka Pengguna seperti Accordion, ButtonBar, ChoiceBox, ComboBoxBase, HTMLEditor, etc. This class belongs to the package javafx.scene.control.
Anda dapat menggunakan kelas-kelas ini untuk memasukkan berbagai elemen UI dalam aplikasi Anda.
Dalam Grup, Anda dapat membuat instance kelas yang disebutkan di atas dan menggunakannya sebagai node root, seperti yang ditunjukkan pada program berikut.
//Creating a Stack Pane
StackPane pane = new StackPane();
//Adding text area to the pane
ObservableList list = pane.getChildren();
list.add(NodeObject);
WebView - Node ini mengelola mesin web dan menampilkan isinya.
Berikut ini adalah diagram yang mewakili hierarki kelas node JavaFX.
Mempersiapkan Adegan
Adegan JavaFX diwakili oleh Scene kelas paket javafx.scene. Anda dapat membuat Scene dengan membuat instance kelas ini seperti yang ditunjukkan pada blok cod berikut.
Saat membuat instance, objek root harus diteruskan ke konstruktor kelas scene.
Scene scene = new Scene(root);
Anda juga bisa melewatkan dua parameter tipe ganda yang mewakili tinggi dan lebar pemandangan seperti yang ditunjukkan di bawah ini.
Scene scene = new Scene(root, 600, 300);
Mempersiapkan Panggung
Ini adalah wadah dari aplikasi JavaFX dan menyediakan jendela untuk aplikasi tersebut. Itu diwakili olehStage kelas paket javafx.stage. Objek kelas ini diteruskan sebagai parameter daristart() metode dari Application kelas.
Dengan menggunakan objek ini, Anda dapat melakukan berbagai operasi di atas panggung. Terutama Anda dapat melakukan yang berikut -
Tetapkan judul untuk panggung menggunakan metode ini setTitle().
Lampirkan objek adegan ke panggung menggunakan setScene() metode.
Tampilkan konten adegan menggunakan show() metode seperti yang ditunjukkan di bawah ini.
//Setting the title to Stage.
primaryStage.setTitle("Sample application");
//Setting the scene to Stage
primaryStage.setScene(scene);
//Displaying the stage
primaryStage.show();
Siklus Hidup Aplikasi JavaFX
Kelas Aplikasi JavaFX memiliki tiga metode siklus hidup, yaitu -
start() - Metode titik masuk tempat kode grafis JavaFX akan ditulis.
stop() - Metode kosong yang dapat diganti, di sini Anda dapat menulis logika untuk menghentikan aplikasi.
init() - Metode kosong yang dapat diganti, tetapi Anda tidak dapat membuat panggung atau adegan dalam metode ini.
Selain itu, ini menyediakan metode statis bernama launch() untuk meluncurkan aplikasi JavaFX.
Sejak launch()metode statis, Anda perlu memanggilnya dari konteks statis (umumnya utama). Setiap kali aplikasi JavaFX diluncurkan, tindakan berikut akan dilakukan (dalam urutan yang sama).
Sebuah instance dari kelas aplikasi dibuat.
Init() metode disebut.
Itu start() metode disebut.
Peluncur menunggu aplikasi selesai dan memanggil stop() metode.
Mengakhiri Aplikasi JavaFX
Saat jendela terakhir aplikasi ditutup, aplikasi JavaFX dihentikan secara implisit. Anda dapat menonaktifkan perilaku ini dengan meneruskan nilai Boolean "False" ke metode statis setImplicitExit() (harus dipanggil dari konteks statis).
Anda dapat menghentikan aplikasi JavaFX secara eksplisit menggunakan metode Platform.exit() atau System.exit(int).
Contoh 1 - Membuat Jendela Kosong
Bagian ini mengajarkan Anda cara membuat aplikasi contoh JavaFX yang menampilkan jendela kosong. Berikut langkah-langkahnya -
Langkah 1: Membuat Kelas
Buat kelas Java dan warisi Application kelas paket javafx.application dan menerapkan metode start () dari kelas ini sebagai berikut.
public class JavafxSample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Langkah 2: Membuat Objek Grup
Dalam start() metode membuat objek grup dengan membuat instance kelas bernama Grup, yang termasuk dalam paket javafx.scene, sebagai berikut.
Group root = new Group();
Langkah 3: Membuat Objek Pemandangan
Buat Scene dengan membuat instance kelas bernama Scene yang termasuk dalam paket javafx.scene. Ke kelas ini, teruskan objek Grup(root), dibuat di langkah sebelumnya.
Selain objek root, Anda juga bisa melewatkan dua parameter ganda yang mewakili tinggi dan lebar layar bersama dengan objek dari kelas Grup sebagai berikut.
Scene scene = new Scene(root,600, 300);
Langkah 4: Mengatur Judul Panggung
Anda dapat mengatur judul ke panggung menggunakan setTitle() metode dari Stagekelas. ItuprimaryStage adalah objek Stage yang diteruskan ke metode start kelas scene, sebagai parameter.
Menggunakan primaryStage objek, tetapkan judul adegan sebagai Sample Application seperti gambar dibawah.
primaryStage.setTitle("Sample Application");
Langkah 5: Menambahkan Scene ke Panggung
Anda bisa menambahkan objek Scene ke panggung menggunakan metode ini setScene() dari kelas bernama Stage. Tambahkan objek Scene yang disiapkan pada langkah sebelumnya menggunakan metode ini seperti yang ditunjukkan di bawah ini.
primaryStage.setScene(scene);
Langkah 6: Menampilkan Isi Panggung
Tampilkan konten adegan menggunakan metode bernama show() dari Stage kelas sebagai berikut.
primaryStage.show();
Langkah 7: Meluncurkan Aplikasi
Luncurkan aplikasi JavaFX dengan memanggil metode statis launch() dari Application kelas dari metode utama sebagai berikut.
public static void main(String args[]){
launch(args);
}
Contoh
Program berikut menghasilkan jendela JavaFX kosong. Simpan kode ini dalam file dengan namaJavafxSample.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac JavafxSample.java
java JavafxSample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Contoh 2 - Menggambar Garis Lurus
Pada contoh sebelumnya, kita telah melihat cara membuat stage kosong, sekarang dalam contoh ini mari kita coba menggambar garis lurus menggunakan library JavaFX.
Berikut langkah-langkahnya -
Langkah 1: Membuat Kelas
Buat kelas Java dan warisi Application kelas paket javafx.application dan menerapkan start() metode kelas ini sebagai berikut.
public class DrawingLine extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Langkah 2: Membuat Garis
Anda dapat membuat baris di JavaFX dengan membuat instance kelas bernama Line yang termasuk dalam sebuah paket javafx.scene.shape, buat instance kelas ini sebagai berikut.
//Creating a line object
Line line = new Line();
Langkah 3: Mengatur Properti ke Garis
Tentukan koordinat untuk menggambar garis pada bidang XY dengan menyetel propertinya startX, startY, endX dan endY, menggunakan metode penyetel masing-masing seperti yang ditunjukkan pada blok kode berikut.
line.setStartX(100.0);
line.setStartY(150.0);
line.setEndX(500.0);
line.setEndY(150.0);
Langkah 4: Membuat Objek Grup
Dalam metode start () buat objek grup dengan membuat instance kelas bernama Grup, yang termasuk dalam paket javafx.scene.
Lewati objek Line (node), yang dibuat pada langkah sebelumnya, sebagai parameter ke konstruktor kelas Grup, untuk menambahkannya ke grup sebagai berikut -
Group root = new Group(line);
Langkah 5: Membuat Objek Pemandangan
Buat Scene dengan membuat instance kelas bernama Scene yang termasuk dalam paket javafx.scene. Ke kelas ini, teruskan objek Grup(root) yang dibuat di langkah sebelumnya.
Selain objek root, Anda juga bisa melewatkan dua parameter ganda yang mewakili tinggi dan lebar layar bersama dengan objek dari kelas Grup sebagai berikut.
Scene scene = new Scene(group ,600, 300);
Langkah 6: Mengatur Judul Panggung
Anda dapat mengatur judul ke panggung menggunakan setTitle() metode dari Stagekelas. ItuprimaryStage adalah objek Stage yang diteruskan ke metode start kelas scene, sebagai parameter.
Menggunakan primaryStage objek, tetapkan judul adegan sebagai Sample Application sebagai berikut.
primaryStage.setTitle("Sample Application");
Langkah 7: Menambahkan Scene ke Panggung
Anda bisa menambahkan objek Scene ke panggung menggunakan metode ini setScene() dari kelas bernama Stage. Tambahkan objek Scene yang disiapkan pada langkah sebelumnya menggunakan metode ini sebagai berikut.
primaryStage.setScene(scene);
Langkah 8: Menampilkan Isi Panggung
Tampilkan konten adegan menggunakan metode bernama show() dari Stage kelas sebagai berikut.
primaryStage.show();
Langkah 9: Meluncurkan Aplikasi
Luncurkan aplikasi JavaFX dengan memanggil metode statis launch() dari Application kelas dari metode utama sebagai berikut.
public static void main(String args[]){
launch(args);
}
Contoh
Program berikut menunjukkan bagaimana membuat garis lurus menggunakan JavaFX. Simpan kode ini dalam file dengan namaJavafxSample.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac DrawingLine.java
java DrawingLine
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan garis lurus seperti yang ditunjukkan di bawah ini.
Contoh 3 - Menampilkan Teks
Kami juga dapat menyematkan teks di scene JavaFX. Contoh ini menunjukkan cara menyematkan teks di JavaFX.
Berikut langkah-langkahnya -
Langkah 1: Membuat Kelas
Membuat Kelas Java dan mewarisi Application kelas paket javafx.application dan menerapkan start() metode kelas ini sebagai berikut.
public class DrawingLine extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Langkah 2: Menyematkan Teks
Anda dapat menyematkan teks ke dalam scene JavaFX dengan membuat instance kelas bernama Text yang termasuk dalam sebuah paket javafx.scene.shape, buat instance kelas ini.
Anda dapat membuat instance kelas ini dengan mengirimkan teks untuk disematkan, dalam format String Atau, Anda dapat membuat objek teks menggunakan konstruktor default seperti yang ditunjukkan di bawah ini.
//Creating a Text object
Text text = new Text();
Langkah 3: Mengatur Font
Anda dapat mengatur font ke teks menggunakan setFont() metode dari Textkelas. Metode ini menerima objek font sebagai parameter. Atur font dari teks yang diberikan menjadi 45 seperti yang ditunjukkan di bawah ini.
//Setting font to the text
text.setFont(new Font(45));
Langkah 4: Mengatur Posisi Teks
Anda dapat menyetel posisi teks pada bidang XY dengan menyetel koordinat X, Y menggunakan metode penyetel masing-masing setX() dan setY() sebagai berikut.
//setting the position of the text
text.setX(50);
text.setY(150);
Langkah 5: Mengatur teks yang akan ditambahkan
Anda dapat menyetel teks yang akan ditambahkan menggunakan metode setText () dari kelas Teks. Metode ini menerima parameter string yang mewakili teks yang akan ditambahkan.
text.setText("Welcome to Tutorialspoint");
Langkah 6: Membuat Objek Grup
Dalam start() metode, buat objek grup dengan membuat instance kelas bernama Grup, yang termasuk dalam paket javafx.scene.
Meneruskan objek Teks (node), yang dibuat pada langkah sebelumnya, sebagai parameter ke konstruktor kelas Grup, untuk menambahkannya ke grup sebagai berikut -
Group root = new Group(text)
Langkah 7: Membuat Objek Pemandangan
Buat Scene dengan membuat instance kelas bernama Scene yang termasuk dalam paket javafx.scene. Ke kelas ini, teruskan objek Grup(root), dibuat di langkah sebelumnya.
Selain objek root, Anda juga bisa melewatkan dua parameter ganda yang mewakili tinggi dan lebar layar bersama dengan objek dari kelas Grup sebagai berikut.
Scene scene = new Scene(group ,600, 300);
Langkah 8: Mengatur Judul Panggung
Anda dapat mengatur judul ke panggung menggunakan setTitle() metode dari Stagekelas. ItuprimaryStage adalah objek Stage yang diteruskan ke metode start kelas scene, sebagai parameter.
Menggunakan primaryStage objek, tetapkan judul adegan sebagai Sample Application seperti gambar dibawah.
primaryStage.setTitle("Sample Application");
Langkah 9: Menambahkan Scene ke Panggung
Anda bisa menambahkan objek Scene ke panggung menggunakan metode ini setScene() dari kelas bernama Stage. Tambahkan objek Scene yang disiapkan pada langkah sebelumnya menggunakan metode ini sebagai berikut.
primaryStage.setScene(scene);
Langkah 10: Menampilkan Isi Panggung
Tampilkan konten adegan menggunakan metode bernama show() dari Stage kelas sebagai berikut.
primaryStage.show();
Langkah 11: Meluncurkan Aplikasi
Luncurkan aplikasi JavaFX dengan memanggil metode statis launch() dari Application kelas dari metode utama sebagai berikut.
public static void main(String args[]){
launch(args);
}
Contoh
Berikut adalah program untuk menampilkan teks menggunakan JavaFX. Simpan kode ini dalam file dengan namaDisplayingText.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac DisplayingText.java
java DisplayingText
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan teks seperti yang ditunjukkan di bawah ini.
Di bab sebelumnya, kita telah melihat aplikasi dasar JavaFX, di mana kita belajar cara membuat jendela kosong dan cara menggambar garis pada bidang XY JavaFX. Selain garis, kita juga bisa menggambar beberapa bentuk 2D lainnya.
Bentuk 2D
Secara umum, bentuk 2D adalah bangun geometri yang dapat digambar pada bidang XY, antara lain Garis, Persegi Panjang, Lingkaran, dll.
Menggunakan pustaka JavaFX, Anda dapat menggambar -
Bentuk yang telah ditentukan sebelumnya seperti Garis, Persegi Panjang, Lingkaran, Elips, Poligon, Garis Poli, Kurva Kubik, Kurva Quad, Busur.
Elemen jalur seperti MoveTO Elemen Jalur, Garis, Garis Horizontal, Garis Vertikal, Kurva Kubik, Kurva Kuadrat, Busur.
Selain itu, Anda juga dapat menggambar bentuk 2D dengan mengurai jalur SVG.
Masing-masing bentuk 2D yang disebutkan di atas diwakili oleh sebuah kelas dan semua kelas ini termasuk dalam paket javafx.scene.shape. Kelas bernamaShape adalah kelas dasar dari semua bentuk 2-Dimensi di JavaFX.
Membuat Bentuk 2D
Untuk membuat bagan, Anda perlu -
- Buat instance kelas masing-masing dari bentuk yang diperlukan.
- Atur properti bentuk.
- Tambahkan objek bentuk ke grup.
Instansiasi Kelas Masing-masing
Untuk membuat bentuk 2 Dimensi, pertama-tama Anda perlu membuat instance kelasnya masing-masing.
Misalnya, jika Anda ingin membuat garis, Anda perlu membuat instance kelas bernama Line sebagai berikut -
Line line = new Line();
Mengatur Properti Bentuk
Setelah membuat instance kelas, Anda perlu menyetel properti untuk bentuk menggunakan metode penyetel.
Misalnya, untuk menggambar garis, Anda harus melewati koordinat x dan y dari titik awal dan titik akhir garis. Anda dapat menentukan nilai-nilai ini menggunakan metode penyetelnya masing-masing sebagai berikut -
//Setting the Properties of the Line
line.setStartX(150.0f);
line.setStartY(140.0f);
line.setEndX(450.0f);
line.setEndY(140.0f);
Menambahkan Objek Bentuk ke Grup
Terakhir, Anda perlu menambahkan objek bentuk ke grup dengan meneruskannya sebagai parameter konstruktor seperti yang ditunjukkan di bawah ini.
//Creating a Group object
Group root = new Group(line);
Tabel berikut memberi Anda daftar berbagai bentuk (kelas) yang disediakan oleh JavaFX.
S.No | Bentuk & Deskripsi |
---|---|
1 | Garis Garis adalah struktur geometris yang menghubungkan dua titik. ItuLine kelas paket javafx.scene.shape mewakili garis di bidang XY. |
2 | Empat persegi panjang Secara umum, persegi panjang adalah poligon bersisi empat yang memiliki dua pasang sisi sejajar dan bersamaan dengan semua sudut interior sebagai sudut siku-siku. Di JavaFX, Persegi panjang diwakili oleh kelas bernamaRectangle. Kelas ini termasuk dalam paketjavafx.scene.shape. |
3 | Persegi Panjang Bulat Di JavaFX, Anda dapat menggambar persegi panjang baik dengan tepi tajam atau dengan tepi melengkung dan persegi dengan tepi melengkung dikenal sebagai persegi panjang bulat. |
4 | Lingkaran Lingkaran adalah garis yang membentuk lingkaran tertutup, yang setiap titiknya merupakan jarak tetap dari titik pusat. Di JavaFX, lingkaran diwakili oleh kelas bernamaCircle. Kelas ini termasuk dalam paketjavafx.scene.shape. |
5 | Elips Elips ditentukan oleh dua titik, masing-masing disebut fokus. Jika ada titik pada elips yang diambil, jumlah jarak ke titik fokus tetap. Besarnya elips ditentukan oleh jumlah kedua jarak tersebut. Di JavaFX, elips diwakili oleh kelas bernama Ellipse. Kelas ini termasuk dalam paketjavafx.scene.shape. |
6 | Poligon Bentuk tertutup yang dibentuk oleh sejumlah segmen garis coplanar yang dihubungkan ujung ke ujung. Di JavaFX, poligon diwakili oleh kelas bernamaPolygon. Kelas ini termasuk dalam paketjavafx.scene.shape. |
7 | Polyline Sebuah polyline sama dengan poligon kecuali sebuah polyline tidak ditutup pada akhirnya. Atau, garis kontinu yang terdiri dari satu atau lebih segmen garis. Di JavaFX, Polyline diwakili oleh kelas bernamaPolygon. Kelas ini termasuk dalam paketjavafx.scene.shape. |
8 | Kurva Kubik Kurva kubik adalah kurva parametrik Bezier pada bidang XY adalah kurva derajat 3. Dalam JavaFX, Kurva Kubik diwakili oleh kelas bernama CubicCurve. Kelas ini termasuk dalam paketjavafx.scene.shape. |
9 | QuadCurve Kurva kuadrat adalah kurva parametrik Bezier di bidang XY adalah kurva derajat 2. Di JavaFX, QuadCurve diwakili oleh kelas bernama QuadCurve. Kelas ini termasuk dalam paketjavafx.scene.shape. |
10 | Busur Busur adalah bagian dari kurva. Di JavaFX, busur diwakili oleh kelas bernamaArc. Kelas ini milik paket -javafx.scene.shape. Jenis BusurSelain itu, kita dapat menggambar tiga jenis busur Open, Chord, Round. |
11 | SVGPath Di JavaFX, kita dapat membuat gambar dengan mengurai jalur SVG. Bentuk seperti itu diwakili oleh kelas bernamaSVGPath. Kelas ini termasuk dalam paketjavafx.scene.shape. Kelas ini memiliki properti bernamacontentdari tipe data String. Ini mewakili string yang dikodekan Jalur SVG, tempat gambar harus diambil .. |
Menggambar Lebih Banyak Bentuk Melalui Kelas Path
Di bagian sebelumnya, kita telah melihat cara menggambar beberapa bentuk sederhana yang telah ditentukan dengan membuat instance kelas dan mengatur parameter masing-masing.
Tapi, bentuk standar ini saja tidak cukup untuk membangun bentuk yang lebih kompleks selain primitif yang disediakan oleh javafx.shape package.
Misalnya, jika Anda ingin menggambar elemen grafis seperti yang ditunjukkan pada diagram berikut, Anda tidak dapat mengandalkan bentuk sederhana tersebut.
Kelas Jalan
Untuk menggambar struktur kompleks seperti itu, JavaFX menyediakan kelas bernama Path. Kelas ini mewakili garis bentuk geometris.
Itu dilampirkan ke daftar yang dapat diamati yang menyimpan berbagai Path Elements seperti moveTo, LineTo, HlineTo, VlineTo, ArcTo, QuadCurveTo, CubicCurveTo.
Saat membuat instance, kelas ini membuat jalur berdasarkan elemen jalur yang diberikan.
Anda bisa meneruskan elemen jalur ke kelas ini sambil membuat instance sebagai berikut-
Path myshape = new Path(pathElement1, pathElement2, pathElement3);
Atau, Anda bisa mendapatkan daftar yang dapat diamati dan menambahkan semua elemen jalur menggunakan addAll() metode sebagai berikut -
Path myshape = new Path();
myshape.getElements().addAll(pathElement1, pathElement2, pathElement3);
Anda juga dapat menambahkan elemen satu per satu menggunakan metode add () sebagai -
Path myshape = new Path();
myshape.getElements().add(pathElement1);
Elemen Pindah ke Jalur
Elemen Jalan MoveTodigunakan untuk memindahkan posisi jalur saat ini ke titik tertentu. Biasanya digunakan untuk menetapkan titik awal dari bentuk yang digambar menggunakan elemen jalur.
Itu diwakili oleh kelas bernama LineTo dari paket javafx.scene.shape. Ini memiliki 2 properti dari tipe data ganda yaitu -
X - Koordinat x dari titik di mana garis akan ditarik dari posisi saat ini.
Y - Koordinat y dari titik di mana garis akan ditarik dari posisi saat ini.
Anda dapat membuat elemen move to path dengan membuat instance kelas MoveTo dan meneruskan koordinat x, y dari titik baru sebagai berikut -
MoveTo moveTo = new MoveTo(x, y);
Jika Anda tidak meneruskan nilai apa pun ke konstruktor, maka titik baru akan disetel ke (0,0).
Anda juga dapat menyetel nilai ke koordinat x, y, menggunakan metode penyetelnya masing-masing sebagai berikut -
setX(value);
setY(value);
Contoh - Menggambar Path Kompleks
Dalam contoh ini, kami akan menunjukkan cara menggambar bentuk berikut menggunakan Path, MoveTo dan Line kelas.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac ComplexShape.java
java ComplexShape
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan busur, yang ditarik dari posisi saat ini ke titik yang ditentukan seperti yang ditunjukkan di bawah ini.
Berikut adalah berbagai elemen jalur (kelas) yang disediakan oleh JavaFX. Kelas-kelas ini ada di dalam paketjavafx.shape. Semua kelas ini mewarisi kelasPathElement.
S.No | Bentuk & Deskripsi |
---|---|
1 | LineTo Elemen jalur linedigunakan untuk menggambar garis lurus ke suatu titik dalam koordinat yang ditentukan dari posisi saat ini. Itu diwakili oleh kelas bernamaLineTo. Kelas ini termasuk dalam paketjavafx.scene.shape. |
2 | HlineTo Elemen jalur HLineTodigunakan untuk menggambar garis horizontal ke suatu titik dalam koordinat yang ditentukan dari posisi saat ini. Itu diwakili oleh kelas bernamaHLineTo. Kelas ini termasuk dalam paketjavafx.scene.shape. |
3 | VLineTo Elemen jalur vertical linedigunakan untuk menggambar garis vertikal ke suatu titik dalam koordinat yang ditentukan dari posisi saat ini. Itu diwakili oleh kelas bernamaVLineTo. Kelas ini termasuk dalam paketjavafx.scene.shape. |
4 | QuadCurveTo Kurva kuadrat elemen jalur digunakan untuk menggambar a quadratic curveke titik dalam koordinat yang ditentukan dari posisi saat ini. Itu diwakili oleh kelas bernamaQuadraticCurveTo. Kelas ini termasuk dalam paketjavafx.scene.shape. |
5 | CubicCurveTo Elemen jalur cubic curvedigunakan untuk menggambar kurva kubik ke suatu titik dalam koordinat yang ditentukan dari posisi saat ini. Itu diwakili oleh kelas bernamaCubicCurveTo. Kelas ini termasuk dalam paketjavafx.scene.shape. |
6 | ArcTo Elemen jalur Arcdigunakan untuk menggambar busur ke titik dalam koordinat yang ditentukan dari posisi saat ini. Itu diwakili oleh kelas bernamaArcTo. Kelas ini termasuk dalam paketjavafx.scene.shape. |
Properti Objek 2D
Untuk semua objek 2-Dimensi, Anda dapat menyetel berbagai properti seperti isian, goresan, StrokeType, dll. Bagian berikut membahas berbagai properti objek 2D.
- Jenis Stroke
- Lebar Stroke
- Isi Stroke
- Stroke
- Garis Stroke
- Batas Stroke Mitre
- Stroke Line Cap
- Smooth
Operasi pada Objek 2D
Jika kita menambahkan lebih dari satu bentuk ke grup, bentuk pertama tumpang tindih dengan yang kedua seperti yang ditunjukkan di bawah ini.
Selain transformasi (rotate, scale, translate, dll.), Transisi (animasi), Anda juga dapat melakukan tiga operasi pada objek 2D yaitu - Union, Subtraction dan Intersection.
S.No | Operasi & Deskripsi |
---|---|
1 | Operasi Serikat Operasi ini mengambil dua atau lebih bentuk sebagai masukan dan mengembalikan area yang ditempati olehnya. |
2 | Operasi Persimpangan Operasi ini mengambil dua atau lebih bentuk sebagai masukan dan mengembalikan area persimpangan di antara keduanya. |
3 | Operasi Pengurangan Operasi ini mengambil dua atau lebih bentuk sebagai masukan. Kemudian, ini mengembalikan area dari bentuk pertama tidak termasuk area yang tumpang tindih dengan yang kedua. |
Sama seperti berbagai bentuk, Anda juga dapat membuat simpul teks di JavaFX. Node teks diwakili oleh kelas bernamaText, yang termasuk dalam paket javafx.scene.text.
Kelas ini berisi beberapa properti untuk membuat teks di JavaFX dan mengubah tampilannya. Kelas ini juga mewarisi kelas Bentuk yang termasuk dalam paketjavafx.scene.shape.
Oleh karena itu, selain properti teks seperti font, alignment, line spacing, teks, dll. Ini juga mewarisi properti node bentuk dasar seperti strokeFill, stroke, strokeWidth, strokeType, dll.
Membuat Node Teks
Sejak kelas Teks paket javafx.scene.text mewakili node teks di JavaFX, Anda dapat membuat teks dengan membuat instance kelas ini sebagai berikut -
Text text = new Text();
Teks kelas berisi properti bernama text jenis string, yang mewakili teks yang akan dibuat.
Setelah membuat instance kelas Teks, Anda perlu menyetel nilai ke properti ini menggunakan setText() metode seperti yang ditunjukkan di bawah ini.
String text = "Hello how are you"
Text.setText(text);
Anda juga dapat mengatur posisi (asal) teks dengan menentukan nilai ke properti x dan y menggunakan metode penyetel masing-masing yaitu setX() dan setY() seperti yang ditunjukkan pada blok kode berikut -
text.setX(50);
text.setY(50);
Contoh
Program berikut adalah contoh yang mendemonstrasikan cara membuat node teks di JavaFX. Simpan kode ini dalam file dengan namaTextExample.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac TextExample.java
java TextExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan teks tertentu sebagai berikut -
Posisi dan Font Teks
Secara default, teks yang dibuat oleh kelas teks memiliki font…, size…, dan berwarna hitam.
Anda dapat mengubah ukuran font dan warna teks menggunakan setFont()metode. Metode ini menerima objek dariFont kelas.
Kelas bernama Font dari paket javafx.scene.textdigunakan untuk menentukan fonta teks. Kelas ini berisi metode statis bernamafont().
Metode ini menerima empat parameter yaitu -
family - Ini adalah tipe String dan mewakili keluarga font yang ingin kita terapkan ke teks.
weight- Properti ini mewakili bobot font. Ini menerima 9 nilai, yaitu -FontWeight.BLACK, FontWeight.BOLD, FontWeight.EXTRA_BOLD, FontWeight.EXTRA_LIGHT, LIGHT, MEDIUM, NORMAL, SEMI_BOLD, THIN.
posture- Properti ini mewakili postur font (biasa atau miring). Ini menerima dua nilaiFontPosture.REGULAR dan FontPosture.ITALIC.
size - Properti ini bertipe double dan mewakili ukuran font.
Anda dapat mengatur font ke teks dengan menggunakan metode berikut -
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
Contoh
Program berikut adalah contoh yang mendemonstrasikan cara mengatur fonta node teks di JavaFX. Di sini, kami mengatur font menjadi Verdana, weight menjadi bold, postur menjadi regular dan size menjadi 20.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac TextFontExample.java
java TextFontExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan teks dengan font yang ditentukan sebagai berikut -
Stroke dan Warna
Kelas Teks juga mewarisi bentuk kelas dari paket. Karena itu, Anda bisa menggunakanjavafx.scene.shape yang dengannya Anda dapat mengatur goresan dan warna ke simpul teks juga.
Anda dapat mengatur warna pada teks menggunakan setFill() metode kelas bentuk (warisan) sebagai berikut -
text.setFill(Color.BEIGE);
Demikian pula, Anda dapat mengatur warna guratan teks menggunakan metode ini setStroke(). Sedangkan lebar guratan bisa diatur menggunakan metodesetStrokeWidth() sebagai berikut -
//Setting the color
text.setFill(Color.BROWN);
//Setting the Stroke
text.setStrokeWidth(2);
//Setting the stroke color
text.setStroke(Color.BLUE);
Contoh
Program berikut ini adalah contoh yang mendemonstrasikan cara menyetel color, strokeWidth dan strokeColor, dari node teks. Dalam kode ini, kita mengatur warna guratan menjadi - biru, warna teks menjadi - coklat dan lebar guratan menjadi - 2.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac StrokeExample.java
java StrokeExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan teks dengan atribut goresan dan warna yang ditentukan sebagai berikut -
Menerapkan Dekorasi ke Teks
Anda juga bisa mengaplikasikan dekorasi seperti strike through; dalam hal ini garis dilewatkan melalui teks. Anda dapat menggarisbawahi teks menggunakan metodeText kelas.
Anda dapat membaca teks menggunakan metode ini setStrikethrough(). Ini menerima nilai Boolean, teruskan nilainyatrue ke metode ini untuk menembus teks seperti yang ditunjukkan pada kotak kode berikut -
//Striking through the text
text1.setStrikethrough(true);
Dengan cara yang sama, Anda bisa menggarisbawahi teks dengan meneruskan nilainya true ke metode setUnderLine() sebagai berikut -
//underlining the text
text2.setUnderline(true);
Contoh
Program berikut adalah contoh yang mendemonstrasikan bagaimana mengaplikasikan dekorasi seperti underline atau strike throughke teks. Simpan kode ini dalam file dengan namaDecorationsExample.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);
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac DecorationsExample.java
java DecorationsExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini -
Efek adalah tindakan apa pun yang meningkatkan tampilan grafik. Dalam JavaFX, efek adalah algoritme yang diterapkan pada node untuk menyempurnakan tampilannya secara visual. Properti efek dariNode kelas digunakan untuk menentukan efeknya.
Di JavaFX, Anda dapat mengatur berbagai efek ke node seperti bloom, blur dan glow. Masing-masing efek ini diwakili oleh sebuah kelas dan semua kelas ini tersedia dalam sebuah paket bernamajavafx.scene.effect.
Menerapkan Efek ke Node
Anda dapat menerapkan efek ke node menggunakan setEffect()metode. Untuk metode ini, Anda harus meneruskan objek efek.
Untuk menerapkan efek ke node, Anda perlu -
Buat node.
Instantiate kelas masing-masing efek yang perlu diterapkan.
Atur properti efek.
Terapkan efek ke node menggunakan setEffect() metode.
Membuat Node
Pertama-tama, buat node dalam aplikasi JavaFX dengan membuat instance kelasnya masing-masing.
Misalnya, jika Anda ingin menerapkan efek cahaya ke gambar di aplikasi Anda. Pertama, Anda perlu membuat node gambar dengan membuat instance kelas Image dan menyetel tampilannya seperti yang ditunjukkan di bawah ini.
//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);
Instansiasi Kelas Masing-masing
Instantiate kelas yang mewakili efek yang perlu diterapkan ke node yang dibuat.
Misalnya - Untuk menerapkan efek cahaya, Anda perlu membuat instance Glow kelas seperti yang ditunjukkan pada kotak kode berikut -
Glow glow = new Glow();
Mengatur Properti Efek
Setelah membuat instance kelas, Anda perlu menyetel properti untuk efek menggunakan metode penyetelnya.
Misalnya - Untuk menggambar kotak 3-Dimensi, Anda harus meneruskan lebar, tinggi, dan kedalamannya. Anda dapat menentukan nilai-nilai ini menggunakan metode penyetelnya masing-masing seperti yang ditunjukkan di bawah ini -
//setting the level property
glow.setLevel(0.9);
Menambahkan Efek ke Node
Terakhir, Anda dapat menerapkan efek yang diperlukan ke node menggunakan setEffect()metode. Sebagai contoh: Untuk mengatur efek cahaya ke node gambar, Anda harus meneruskan objek kelas Cahaya ke metode ini sebagai berikut -
imageView.setEffect(glow);
JavaFX Effects- Tabel berikut memberi Anda daftar berbagai efek (kelas) yang disediakan oleh JavaFX. Kelas-kelas ini ada dalam paket yang disebutjavafx.scene.effect.
S.No | Bentuk dan Deskripsi |
---|---|
1 | Color Adjust Anda dapat menyesuaikan warna gambar dengan menerapkan efek penyesuaian warna padanya. Ini termasuk penyesuaian filehue, saturation, brightness dan contrast pada setiap piksel Kelas bernama ColorAdjust dari paket javafx.scene.effect mewakili efek penyesuaian warna. |
2 | Masukan Warna Color Input Effect memberikan hasil yang sama seperti menggambar persegi panjang dan mengisinya dengan warna. Tidak seperti efek lain, jika efek ini diterapkan ke sembarang node, ini hanya menampilkan kotak persegi panjang (bukan node). Efek ini sebagian besar digunakan sebagai masukan untuk efek lainnya. Kelas bernama ColorInput dari paket javafx.scene.effect mewakili efek masukan warna. |
3 | Masukan Gambar Efek input gambar di JavaFX hanya menyematkan gambar ke layar JavaFX. Sama seperti efek Input Warna (Ini digunakan untuk melewatkan wilayah persegi panjang berwarna yang ditentukan sebagai input ke efek lain), efek Input Gambar digunakan untuk meneruskan gambar yang ditentukan sebagai input ke efek lain. Kelas bernama ImageInput dari paket javafx.scene.effect mewakili efek Input Gambar. |
4 | Campur Secara umum, campuran berarti campuran dari dua atau lebih zat atau zat yang berbeda. Jika kita menerapkan efek campuran ini, ini mengambil piksel dari dua masukan yang berbeda, di lokasi yang sama dan menghasilkan keluaran gabungan berdasarkanblend mode. Kelas bernama Blend dari paket javafx.scene.effect mewakili efek campuran. |
5 | Berkembang Saat menerapkan efek mekar, piksel di beberapa bagian node dibuat bersinar. Kelas bernama Bloom dari paket javafx.scene.effect mewakili efek mekar. |
6 | Cahaya Sama seperti mekar, efek Glow membuat gambar input yang diberikan bersinar, efek ini membuat piksel cerah dari input menjadi lebih cerah. Kelas bernama Glow dari paket javafx.scene.effect mewakili efek cahaya. |
7 | Box Blur Saat menerapkan efek blur ini ke node, dibuat tidak jelas. Box blur adalah sejenis efek blur yang disediakan oleh JavaFX. Dalam efek ini, saat kita menerapkan blur ke node, filter kotak sederhana digunakan. Kelas bernama BoxBlur dari paket javafx.scene.effect mewakili efek boxblur. |
8 | GaussianBlur Sama seperti Box Blur Gaussian adalah efek untuk mengaburkan node di JavaFX. Satu-satunya perbedaan di fileGaussian Blur effect adalah bahwa kernel konvolusi Gaussian digunakan untuk menghasilkan efek kabur. Kelas bernama GaussianBlur dari paket tersebut javafx.scene.effect mewakili efek Gaussian Blur. |
9 | MotionBlur Sama seperti Efek Gaussian, Motion Blur adalah efek untuk mengaburkan node di JavaFX. Ia juga menggunakan kernel konvolusi Gaussian untuk menghasilkan efek kabur, tetapi perbedaannya adalah dalam efek ini kernel konvolusi Gaussian digunakan dengan sudut tertentu. Kelas bernama MotionBlur dari paket javafx.scene.effect mewakili efek Motion Blur. |
10 | Refleksi Saat menerapkan efek refleksi ke node di JavaFX, refleksi itu ditambahkan di bagian bawah node. Kelas bernama Reflection dari paket javafx.scene.effect mewakili efek refleksi. |
11 | SepiaTone Saat menerapkan efek nada Sepia ke node di JavaFX (gambar secara umum), itu diwarnai dengan warna coklat kemerahan. Kelas bernama SepiaTone dari paket javafx.scene.effect mewakili efek nada sepia. |
12 | Bayangan Efek ini membuat duplikat dari node yang ditentukan dengan tepi buram. Kelas bernama Shadow dari paket javafx.scene.effect mewakili efek nada sepia. |
13 | DropShadow Saat menerapkan efek ini ke node, bayangan akan dibuat di belakang node yang ditentukan. Kelas bernama DropShadow dari paket javafx.scene.effect mewakili efek bayangan jatuh. |
14 | InnerShadow Saat menerapkan efek ini ke node, bayangan akan dibuat di dalam tepi node. Kelas bernama InnerShadow dari paket javafx.scene.effect mewakili efek bayangan batin. |
15 | Petir Efek pencahayaan digunakan untuk mensimulasikan cahaya dari sumber cahaya. Ada berbagai macam sumber cahaya yaitupoint, distant dan spot. Kelas bernama Lighting dari paket javafx.scene.effect mewakili efek pencahayaan. |
16 | Cahaya Jarak Jauh Saat menerapkan efek ini ke node, sebuah cahaya disimulasikan di atasnya, seolah-olah itu dihasilkan oleh sumber cahaya yang jauh. Distant Light Source- Sumber yang berada pada jarak jauh dari node. Di sini, cahaya dilemahkan ke satu arah dari sumbernya. Kelas bernama Light.Distant dari paket javafx.scene.effect mewakili sumber cahaya yang jauh. |
17 | Light.Spot Saat menerapkan efek ini ke sebuah node, sebuah cahaya disimulasikan di atasnya, seolah-olah itu dihasilkan oleh sebuah lampu sorot. Spot light Source- Cahaya dari sumber ini melemah ke segala arah. Intensitas cahayanya tergantung pada jarak benda dari sumbernya. Kelas bernama Light.Spot dari paket javafx.scene.effect mewakili sumber cahaya yang jauh. |
18 | Point.Spot Saat menerapkan efek ini ke node, sebuah cahaya disimulasikan di atasnya, seolah-olah itu dihasilkan oleh sumber cahaya titik. Point Light Source- Cahaya dari sumber ini melemah ke segala arah dari satu titik. Intensitas cahayanya tergantung pada jarak benda dari sumbernya. Kelas bernama Point.Spot dari paket javafx.scene.effect mewakili titik cahaya. |
Transformasi berarti mengubah beberapa grafik menjadi sesuatu yang lain dengan menerapkan aturan. Kita dapat memiliki berbagai jenis transformasi sepertiTranslation, Scaling Up or Down, Rotation, Shearing, dll.
Menggunakan JavaFX, Anda dapat menerapkan transformasi pada node seperti rotasi, penskalaan, dan terjemahan. Semua transformasi ini diwakili oleh berbagai kelas dan ini termasuk dalam paketjavafx.scene.transform.
S.No | Transformasi & Deskripsi |
---|---|
1 | Rotasi Dalam rotasi, kami memutar objek pada sudut tertentu θ (theta) dari asalnya. |
2 | Penskalaan Untuk mengubah ukuran suatu objek, transformasi penskalaan digunakan. |
3 | Terjemahan Memindahkan objek ke posisi berbeda di layar. |
4 | Pencukuran Transformasi yang memiringkan bentuk suatu objek disebut Transformasi Geser. |
Transformasi Ganda
Anda juga dapat menerapkan beberapa transformasi pada node di JavaFX. Program berikut adalah contoh yang bekerjaRotation, Scaling dan Translation transformasi pada persegi panjang secara bersamaan.
Simpan kode ini dalam file dengan nama -
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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac MultipleTransformationsExample.java
java MultipleTransformationsExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Transformasi pada Objek 3D
Anda juga dapat menerapkan transformasi pada objek 3D. Berikut adalah contoh yang memutar dan menerjemahkan kotak 3-Dimensi.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac RotationExample3D.java
java RotationExample3D
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Secara umum, menganimasikan suatu objek berarti menciptakan ilusi gerakannya dengan tampilan cepat. Di JavaFX, node dapat dianimasikan dengan mengubah propertinya dari waktu ke waktu. JavaFX menyediakan paket bernamajavafx.animation. Paket ini berisi kelas yang digunakan untuk menganimasikan node. Animasi adalah kelas dasar dari semua kelas ini.
Menggunakan JavaFX, Anda dapat menerapkan animasi (transisi) seperti Fade Transition, Fill Transition, Rotate Transition, Scale Transition, Stroke Transition, Translate Transition, Path Transition, Sequential Transition, Pause Transition, Parallel Transition, dll.
Semua transisi ini diwakili oleh kelas individu dalam paket javafx.animation.
Untuk menerapkan animasi tertentu ke node, Anda harus mengikuti langkah-langkah di bawah ini -
Buat node yang dibutuhkan menggunakan kelas masing-masing.
Instantiate kelas transisi (animasi) masing-masing yang akan diterapkan
Setel properti transisi dan
Terakhir, putar transisi menggunakan play() metode dari Animation kelas.
Dalam bab ini kita akan membahas contoh transisi dasar (Rotasi, Penskalaan, Terjemahan).
Putar Transisi
Berikut adalah program yang mendemonstrasikan Rotate Transition di JavaFX. Simpan kode ini dalam file dengan namaRotateTransitionExample.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac RotateTransitionExample.java
java RotateTransitionExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Transisi Skala
Berikut adalah program yang mendemonstrasikan Scale Transition di JavaFX. Simpan kode ini dalam file dengan namaScaleTransitionExample.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac ScaleTransitionExample.java
java ScaleTransitionExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Terjemahkan Transisi
Berikut adalah program yang mendemonstrasikan Transisi Terjemahan di JavaFX. Simpan kode ini dalam file dengan namaTranslateTransitionExample.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac TranslateTransitionExample.java
java TranslateTransitionExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Selain itu, JavaFX menyediakan kelas untuk menerapkan lebih banyak transisi pada node. Berikut ini adalah jenis transisi lain yang didukung oleh JavaFX.
Transisi yang mempengaruhi atribut node Fade, Fill, Stroke
Transisi yang melibatkan lebih dari satu transisi dasar Sequential, Parallel, Pause
Transisi yang menerjemahkan objek di sepanjang jalur Path Transition yang ditentukan
Untuk menerapkan warna ke aplikasi, JavaFX menyediakan berbagai kelas dalam paket javafx.scene.paintpaket. Paket ini berisi kelas abstrak bernama Paint dan ini adalah kelas dasar dari semua kelas yang digunakan untuk menerapkan warna.
Dengan menggunakan kelas-kelas ini, Anda dapat menerapkan warna dalam pola berikut -
Uniform - Pada pola ini, warna diterapkan secara seragam di seluruh node.
Image Pattern - Ini memungkinkan Anda untuk mengisi wilayah node dengan pola gambar.
Gradient- Dalam pola ini, warna yang diterapkan pada node bervariasi dari satu titik ke titik lainnya. Ini memiliki dua jenis gradien yaituLinear Gradient dan Radial Gradient.
Semua kelas node tempat Anda dapat menerapkan warna seperti Shape, Text (termasuk Scene), memiliki metode bernama setFill() dan setStroke(). Ini akan membantu untuk mengatur nilai warna dari node dan goresannya masing-masing.
Metode ini menerima objek bertipe Paint. Oleh karena itu, untuk membuat salah satu dari jenis gambar ini, Anda perlu membuat instance kelas-kelas ini dan meneruskan objek sebagai parameter ke metode ini.
Menerapkan Warna ke Node
Untuk menyetel pola warna seragam ke node, Anda perlu meneruskan objek warna kelas ke setFill(), setStroke() metode sebagai berikut -
//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);
Pada blok kode di atas, kami menggunakan variabel statis dari kelas warna untuk membuat objek warna.
Dengan cara yang sama, Anda juga dapat menggunakan nilai RGB atau standar pewarnaan HSB atau kode hash web warna seperti yang ditunjukkan di bawah ini -
//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);
Contoh
Berikut adalah contoh yang menunjukkan, bagaimana menerapkan warna ke node di JavaFX. Di sini, kami membuat lingkaran dan simpul teks dan menerapkan warna padanya.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac ColorExample.java
java ColorExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Menerapkan Pola Gambar ke Node
Untuk menerapkan pola gambar ke node, buat instance ImagePattern kelas dan meneruskan objeknya ke setFill(), setStroke() metode.
Konstruktor kelas ini menerima enam parameter yaitu -
Image - Objek gambar yang ingin Anda buat polanya.
x and y - Variabel ganda mewakili koordinat (x, y) dari asal persegi panjang jangkar.
height and width - Variabel ganda yang mewakili tinggi dan lebar gambar yang digunakan untuk membuat pola.
isProportional- Ini adalah Variabel Boolean; saat menyetel properti ini ke true, lokasi awal dan akhir disetel menjadi proporsional.
ImagePattern radialGradient = new ImagePattern(dots, 20, 20, 40, 40, false);
Contoh
Berikut adalah contoh yang menunjukkan bagaimana menerapkan pola gambar ke node di JavaFX. Di sini, kami membuat lingkaran dan simpul teks dan menerapkan pola gambar padanya.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac ImagePatternExample.java
java ImagePatternExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Menerapkan Pola Gradien Linear
Untuk menerapkan Pola Gradien Linear ke node, buat instance LinearGradient kelas dan meneruskan objeknya ke setFill(), setStroke() metode.
Konstruktor kelas ini menerima lima parameter yaitu -
startX, startY - Properti ganda ini mewakili koordinat x dan y dari titik awal gradien.
endX, endY - Properti ganda ini mewakili koordinat x dan y dari titik akhir gradien.
cycleMethod - Argumen ini mendefinisikan bagaimana daerah di luar batas gradien warna, yang ditentukan oleh titik awal dan akhir, harus diisi.
proportional- Ini adalah Variabel Boolean; tentang menyetel properti ini ketrue, lokasi awal dan akhir disetel ke proporsi.
Stops - Argumen ini mendefinisikan titik-titik penghentian warna di sepanjang garis gradien.
//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);
Contoh
Berikut adalah contoh yang menunjukkan bagaimana menerapkan pola gradien ke node di JavaFX. Di sini, kami membuat lingkaran dan simpul teks dan menerapkan pola gradien linier padanya.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac LinearGradientExample.java
java LinearGradientExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Menerapkan Pola Gradien Radial
Untuk menerapkan Pola Gradien Radial ke node, buat instance GradientPattern kelas dan meneruskan objeknya ke setFill(), setStroke() metode.
Konstruktor kelas ini menerima beberapa parameter, beberapa di antaranya adalah -
startX, startY - Properti ganda ini mewakili koordinat x dan y dari titik awal gradien.
endX, endY - Properti ganda ini mewakili koordinat x dan y dari titik akhir gradien.
cycleMethod - Argumen ini mendefinisikan bagaimana daerah di luar batas gradien warna ditentukan oleh titik awal dan akhir dan bagaimana mereka harus diisi.
proportional- Ini adalah Variabel Boolean; tentang menyetel properti ini ketrue lokasi awal dan akhir ditetapkan ke proporsi.
Stops - Argumen ini mendefinisikan titik-titik penghentian warna di sepanjang garis gradien.
//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);
Contoh
Berikut adalah contoh yang menunjukkan bagaimana menerapkan pola gradien radial ke node di JavaFX. Di sini, kami membuat lingkaran dan simpul teks dan menerapkan pola gradien padanya.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac RadialGradientExample.java
java RadialGradientExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Anda dapat memuat dan memodifikasi gambar menggunakan kelas yang disediakan oleh JavaFX dalam paket javafx.scene.image. JavaFX mendukung format gambar sepertiBmp, Gif, Jpeg, Png.
Bab ini mengajarkan Anda bagaimana memuat gambar ke JavaFX, bagaimana memproyeksikan gambar dalam beberapa tampilan dan bagaimana mengubah piksel gambar.
Memuat Gambar
Anda dapat memuat gambar di JavaFX dengan membuat instance kelas bernama Image dari paket javafx.scene.image.
Untuk konstruktor kelas, Anda harus meneruskan salah satu dari berikut -
Sebuah InputStream objek gambar yang akan dimuat atau,
Variabel string yang menahan URL gambar.
//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));
Setelah memuat gambar, Anda dapat mengatur tampilan untuk gambar dengan membuat instance ImageView kelas dan meneruskan gambar ke konstruktornya sebagai berikut -
ImageView imageView = new ImageView(image);
Contoh
Berikut adalah contoh yang menunjukkan bagaimana memuat gambar di JavaFX dan mengatur tampilan.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac ImageExample.java
java ImageExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Beberapa Tampilan Gambar
Anda juga dapat mengatur beberapa tampilan untuk gambar dalam pemandangan yang sama. Program berikut adalah contoh yang mendemonstrasikan bagaimana mengatur berbagai tampilan untuk sebuah gambar dalam sebuah scene di JavaFX.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac MultipleViews.java
java MultipleViews
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Piksel Menulis
JavaFX menyediakan kelas bernama PixelReader dan PixelWriterkelas untuk membaca dan menulis piksel gambar. ItuWritableImage kelas digunakan untuk membuat gambar yang bisa ditulis.
Berikut adalah contoh yang menunjukkan cara membaca dan menulis piksel dari suatu gambar. Di sini, kita membaca nilai warna sebuah gambar dan membuatnya lebih gelap.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac WritingPixelsExample.java
java WritingPixelsExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX sebagai berikut -
Di bab sebelumnya, kita telah melihat cara menggambar bentuk 2D pada bidang XY. Selain bentuk 2D ini, kita bisa menggambar beberapa bentuk 3D lainnya juga menggunakan JavaFX.
Bentuk 3D
Secara umum, bangun 3D merupakan bangun geometri yang dapat digambar pada bidang XYZ. Ini termasuk aCylinder, Sphere dan a Box.
Masing-masing bentuk 3D yang disebutkan di atas diwakili oleh sebuah kelas dan semua kelas ini termasuk dalam paket javafx.scene.shape. Kelas bernamaShape3D adalah kelas dasar dari semua bentuk 3-Dimensi di JavaFX.
Membuat Bentuk 3D
Untuk membuat bentuk 3-Dimensi, Anda perlu -
Buat instance kelas masing-masing dari bentuk 3D yang diperlukan.
Atur properti bentuk 3D.
Tambahkan objek bentuk 3D ke grup.
Instansiasi Kelas Masing-masing
Untuk membuat bentuk 3-Dimensi, pertama-tama Anda perlu membuat instance kelasnya masing-masing. Misalnya, jika Anda ingin membuat kotak 3D, Anda perlu membuat instance kelas bernama Box sebagai berikut -
Box box = new Box();
Mengatur Properti Bentuk
Setelah membuat instance kelas, Anda perlu menyetel properti untuk bentuk menggunakan metode penyetel.
Misalnya, untuk menggambar kotak 3D Anda harus meneruskan Width, Height, Depth-nya. Anda dapat menentukan nilai-nilai ini menggunakan metode penyetelnya masing-masing sebagai berikut -
//Setting the properties of the Box
box.setWidth(200.0);
box.setHeight(400.0);
box.setDepth(200.0);
Menambahkan Objek Bentuk ke Grup
Terakhir, Anda perlu menambahkan objek bentuk ke grup dengan meneruskannya sebagai parameter konstruktor seperti yang ditunjukkan di bawah ini.
//Creating a Group object
Group root = new Group(box);
Tabel berikut memberi Anda daftar berbagai bentuk 3D yang disediakan oleh JavaFX.
S.No | Bentuk & Deskripsi |
---|---|
1 | Kotak Kubus adalah bentuk tiga dimensi dengan a length (kedalaman), width, dan a height. Di JavaFX kotak tiga dimensi diwakili oleh kelas bernama Box. Kelas ini termasuk dalam paketjavafx.scene.shape. Dengan membuat instance kelas ini, Anda dapat membuat node Box di JavaFX. Kelas ini memiliki 3 properti dari tipe data ganda yaitu -
|
2 | Silinder Silinder adalah padatan tertutup yang memiliki dua alas paralel (kebanyakan melingkar) yang dihubungkan oleh permukaan melengkung. Ini dijelaskan oleh dua parameter, yaitu, radius dari alas melingkar dan height dari silinder. Di JavaFX, silinder diwakili oleh kelas bernama Cylinder. Kelas ini termasuk dalam paketjavafx.scene.shape. Dengan membuat instance kelas ini, Anda dapat membuat node silinder di JavaFX. Kelas ini memiliki 2 properti dari tipe data ganda yaitu -
|
3 | Bola Bola didefinisikan sebagai kumpulan titik yang semuanya berada pada jarak r yang sama dari titik tertentu dalam ruang 3D. Jarak r adalah jari-jari bola dan titik tertentu adalah pusat bola. Di JavaFX, bola diwakili oleh kelas bernama Sphere. Kelas ini termasuk dalam paketjavafx.scene.shape. Dengan membuat instance kelas ini, Anda dapat membuat node sphere di JavaFX. Kelas ini memiliki properti bernama radiusdari tipe data ganda. Ini mewakili radius Sphere. |
Properti Objek 3D
Untuk semua objek 3 Dimensi, Anda dapat mengatur berbagai properti seperti Cull Face, Drawing Mode, Material.
Bagian berikut membahas properti objek 3D.
Cull Face
Secara umum, pemusnahan adalah penghilangan bagian bentuk yang tidak diorientasikan dengan benar (yang tidak terlihat di area tampilan).
Properti Cull Face adalah dari jenisnya CullFacedan itu mewakili Wajah Pemusnahan dari bentuk 3D. Anda dapat mengatur Wajah Pemusnahan dari suatu bentuk menggunakan metode inisetCullFace() seperti yang ditunjukkan di bawah ini -
box.setCullFace(CullFace.NONE);
Jenis guratan suatu bentuk dapat berupa -
None - Tidak ada pemusnahan dilakukan (CullFace.NONE).
Front- Semua poligon yang menghadap ke depan disingkirkan. (CullFace.FRONT).
Back- Semua poligon yang menghadap ke belakang disingkirkan. (StrokeType.BACK).
Secara default, tampilan pemusnahan dari bentuk 3 Dimensi adalah Kembali.
Contoh
Program berikut adalah contoh yang mendemonstrasikan berbagai permukaan pemusnahan bola. Simpan kode ini dalam file dengan namaSphereCullFace.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);
}
}
Kompilasi dan jalankan file Java yang disimpan dari command prompt menggunakan perintah berikut.
javac SphereCullFace.java
java SphereCullFace
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan tiga bidang dengan nilai wajah pemusnahan FRONT, BACK dan NONE masing-masing sebagai berikut -
Mode Menggambar
Ini adalah properti dari tipe DrawModedan itu mewakili mode menggambar yang digunakan untuk menggambar bentuk 3D saat ini. Anda dapat memilih mode gambar untuk menggambar bentuk 3D menggunakan metode setDrawMode () sebagai berikut -
box.setDrawMode(DrawMode.FILL);
Di JavaFX, Anda dapat memilih dua mode gambar untuk menggambar bentuk 3D, yaitu -
Fill - Mode ini menggambar dan mengisi bentuk 2D (DrawMode.FILL).
Line - Mode ini menggambar bentuk 3D menggunakan garis (DrawMode.LINE).
Secara default, mode menggambar bentuk 3Dimensi adalah isian.
Contoh
Program berikut adalah contoh yang mendemonstrasikan berbagai mode gambar dari kotak 3D. Simpan kode ini dalam file dengan namaBoxDrawMode.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac BoxDrawMode.java
java BoxDrawMode
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan dua kotak dengan nilai mode gambar LINE dan FILL masing-masing, sebagai berikut -
Bahan
Properti Wajah pemusnahan adalah dari jenisnya Materialdan digunakan untuk memilih permukaan material bentuk 3D. Anda dapat mengatur materi bentuk 3D menggunakan metode inisetCullFace() sebagai berikut -
cylinder.setMaterial(material);
Seperti yang disebutkan di atas untuk metode ini, Anda harus meneruskan objek berjenis Material. ItuPhongMaterial kelas paket javafx.scene.paintadalah sub kelas dari kelas ini dan menyediakan 7 properti yang mewakili bahan berbayang Phong. Anda dapat menerapkan semua jenis bahan ini ke permukaan bentuk 3D menggunakan metode penyetel properti ini.
Berikut adalah jenis material yang tersedia di JavaFX -
bumpMap - Ini mewakili peta normal yang disimpan sebagai Gambar RGB.
diffuseMap - Ini mewakili peta yang tersebar.
selfIlluminationMap - Ini mewakili peta iluminasi diri dari PhongMaterial ini.
specularMap - Ini mewakili peta specular dari PhongMaterial ini.
diffuseColor - Ini mewakili warna menyebar dari Bahan Phong ini.
specularColor - Ini mewakili warna specular dari PhongMaterial ini.
specularPower - Ini mewakili kekuatan spekular dari PhongMaterial ini.
Secara default, bahan dari bentuk 3-Dimensi adalah Bahan Phong dengan warna abu-abu terang yang tersebar.
Contoh
Berikut adalah contoh yang menampilkan berbagai material pada silinder. Simpan kode ini dalam file dengan namaCylinderMaterials.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
Javac CylinderMaterials.java
java CylinderMaterials
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan 7 silinder dengan Material, Bump Map, Diffuse Map, Self-Illumination Map, Specular Map, Diffuse Color, Specular Color, (BLANCHEDALMOND) Specular Power, masing-masing, seperti yang ditunjukkan pada tangkapan layar berikut -
Di JavaFX, kami dapat mengembangkan aplikasi GUI, aplikasi web, dan aplikasi grafis. Dalam aplikasi seperti itu, setiap kali pengguna berinteraksi dengan aplikasi (node), sebuah peristiwa dikatakan telah terjadi.
Misalnya, mengklik tombol, menggerakkan mouse, memasukkan karakter melalui keyboard, memilih item dari daftar, menggulir halaman adalah aktivitas yang menyebabkan terjadinya suatu peristiwa.
Jenis Peristiwa
Peristiwa secara luas dapat diklasifikasikan ke dalam dua kategori berikut -
Foreground Events- Peristiwa yang membutuhkan interaksi langsung dari pengguna. Mereka dihasilkan sebagai konsekuensi dari seseorang yang berinteraksi dengan komponen grafis dalam Antarmuka Pengguna Grafis. Misalnya, mengklik tombol, menggerakkan mouse, memasukkan karakter melalui keyboard, memilih item dari daftar, menggulir halaman, dll.
Background Events- Peristiwa yang membutuhkan interaksi pengguna akhir dikenal sebagai peristiwa latar belakang. Gangguan sistem operasi, kegagalan perangkat keras atau perangkat lunak, waktu kedaluwarsa, penyelesaian operasi adalah contoh peristiwa latar belakang.
Acara di JavaFX
JavaFX menyediakan dukungan untuk menangani berbagai jenis acara. Kelas bernamaEvent dari paket javafx.event adalah kelas dasar untuk suatu acara.
Sebuah contoh dari salah satu subkelasnya adalah sebuah acara. JavaFX menyediakan berbagai macam acara. Beberapa di antaranya tercantum di bawah ini.
Mouse Event- Ini adalah peristiwa input yang terjadi saat mouse diklik. Itu diwakili oleh kelas bernamaMouseEvent. Ini termasuk tindakan seperti klik mouse, mouse ditekan, mouse dilepaskan, mouse dipindahkan, mouse masuk target, mouse keluar target, dll.
Key Event- Ini adalah peristiwa input yang menunjukkan penekanan tombol terjadi pada node. Itu diwakili oleh kelas bernamaKeyEvent. Acara ini mencakup tindakan seperti tombol ditekan, kunci dilepaskan dan tombol diketik.
Drag Event- Ini adalah peristiwa input yang terjadi saat mouse ditarik. Itu diwakili oleh kelas bernamaDragEvent. Ini termasuk tindakan seperti seret masuk, seret turun, seret target yang dimasukkan, seret keluar target, seret, dll.
Window Event- Ini adalah acara yang terkait dengan jendela yang menampilkan / menyembunyikan tindakan. Itu diwakili oleh kelas bernamaWindowEvent. Ini termasuk tindakan seperti menyembunyikan jendela, jendela ditampilkan, jendela tersembunyi, menampilkan jendela, dll.
Penanganan Acara
Penanganan Peristiwa adalah mekanisme yang mengontrol peristiwa dan memutuskan apa yang harus terjadi, jika peristiwa terjadi. Mekanisme ini memiliki kode yang dikenal sebagai pengendali kejadian yang dijalankan ketika suatu kejadian terjadi.
JavaFX menyediakan penangan dan filter untuk menangani acara. Di JavaFX setiap acara memiliki -
Target- Node tempat terjadinya suatu peristiwa. Target bisa berupa jendela, pemandangan, dan simpul.
Source- Sumber tempat acara dibuat akan menjadi sumber acara. Dalam skenario di atas, mouse adalah sumber acara.
Type- Jenis acara yang terjadi; dalam kasus peristiwa mouse - mouse ditekan, mouse dilepaskan adalah jenis peristiwa.
Asumsikan bahwa kita memiliki aplikasi yang memiliki Circle, Stop dan Play Buttons yang dimasukkan menggunakan objek grup sebagai berikut -
Jika Anda mengklik tombol putar, sumbernya adalah mouse, node target adalah tombol putar, dan jenis acara yang dihasilkan adalah klik mouse.
Fase Penanganan Event di JavaFX
Setiap kali sebuah acara dibuat, JavaFX mengalami fase berikut.
Konstruksi Rute
Setiap kali suatu peristiwa dibuat, rute default / awal peristiwa ditentukan oleh konstruksi file Event Dispatch chain. Ini adalah jalur dari tahapan ke Node sumber.
Berikut ini adalah rantai pengiriman acara untuk acara yang dihasilkan, ketika kami mengklik tombol putar dalam skenario di atas.
Fase Penangkapan Peristiwa
Setelah pembangunan rantai pengiriman acara, simpul akar aplikasi mengirimkan acara tersebut. Peristiwa ini berjalan ke semua node dalam rantai pengiriman (dari atas ke bawah). Jika salah satu node ini memiliki filefilterterdaftar untuk acara yang dihasilkan, itu akan dieksekusi. Jika tidak ada node dalam rantai pengiriman yang memiliki filter untuk acara yang dihasilkan, maka itu diteruskan ke node target dan akhirnya node target memproses acara tersebut.
Fase Gelembung Acara
Dalam fase gelembung acara, acara tersebut berjalan dari node target ke node panggung (bawah ke atas). Jika salah satu node dalam rantai pengiriman acara memilikihandlerterdaftar untuk acara yang dihasilkan, itu akan dieksekusi. Jika tidak ada dari node ini yang memiliki penangan untuk menangani event tersebut, maka event tersebut mencapai node root dan akhirnya proses akan selesai.
Penangan dan Filter Acara
Filter dan penangan peristiwa adalah yang berisi logika aplikasi untuk memproses suatu peristiwa. Sebuah node dapat mendaftar ke lebih dari satu handler / filter. Dalam kasus node induk-anak, Anda dapat memberikan filter / handler umum kepada orang tua, yang diproses sebagai default untuk semua node anak.
Seperti disebutkan di atas, selama acara, pemrosesan adalah filter yang dijalankan dan selama fase gelembung, penangan dijalankan. Semua penangan dan filter menerapkan antarmukaEventHandler dari paket javafx.event.
Menambah dan Menghapus Filter Peristiwa
Untuk menambahkan filter peristiwa ke node, Anda perlu mendaftarkan filter ini menggunakan metode addEventFilter() dari Node kelas.
//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);
Dengan cara yang sama, Anda bisa menghapus filter menggunakan metode removeEventFilter () seperti yang ditunjukkan di bawah ini -
circle.removeEventFilter(MouseEvent.MOUSE_CLICKED, eventHandler);
Contoh Penanganan Acara
Berikut adalah contoh yang mendemonstrasikan penanganan event di JavaFX menggunakan filter event. Simpan kode ini dalam file dengan namaEventFiltersExample.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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac EventFiltersExample.java
java EventFiltersExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Menambah dan Menghapus Penangan Acara
Untuk menambahkan event handler ke node, Anda perlu mendaftarkan handler ini menggunakan metode addEventHandler() dari Node kelas seperti yang ditunjukkan di bawah ini.
//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);
Dengan cara yang sama, Anda bisa menghapus pengendali kejadian menggunakan metode removeEventHandler () seperti yang ditunjukkan di bawah ini -
circle.removeEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler);
Contoh
Program berikut adalah contoh yang mendemonstrasikan penanganan event di JavaFX menggunakan event handler.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac EventHandlersExample.java
java EventHandlersExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX yang menampilkan bidang teks dan kotak 3D seperti yang ditunjukkan di bawah ini -
Di sini, jika Anda mengetik huruf di bidang teks, kotak 3D mulai berputar di sepanjang sumbu x. Jika Anda mengklik kotak itu lagi, rotasi berhenti.
Menggunakan Metode Kemudahan untuk Penanganan Acara
Beberapa kelas di JavaFX mendefinisikan properti penanganan kejadian. Dengan menyetel nilai ke properti ini menggunakan metode penyetelnya masing-masing, Anda bisa mendaftar ke pengendali kejadian. Metode ini dikenal sebagai metode kenyamanan.
Sebagian besar metode ini ada di kelas seperti Node, Scene, Window, dll., Dan tersedia untuk semua sub kelasnya.
Misalnya, untuk menambahkan event listener mouse ke sebuah tombol, Anda dapat menggunakan metode praktis setOnMouseClicked() seperti gambar dibawah.
playButton.setOnMouseClicked((new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Hello World");
pathTransition.play();
}
}));
Contoh
Program berikut adalah contoh yang mendemonstrasikan penanganan event di JavaFX menggunakan metode kemudahan.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac ConvinienceMethodsExample.java
java ConvinienceMethodsExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini. Di sini klik tombol putar untuk memulai animasi dan klik tombol berhenti untuk menghentikan animasi.
Setiap antarmuka pengguna mempertimbangkan tiga aspek utama berikut -
UI elements- Ini adalah elemen visual inti yang akhirnya dilihat dan berinteraksi dengan pengguna. JavaFX menyediakan daftar besar elemen yang banyak digunakan dan umum yang bervariasi dari dasar hingga kompleks, yang akan kita bahas dalam tutorial ini.
Layouts- Mereka menentukan bagaimana elemen UI harus diatur pada layar dan memberikan tampilan dan nuansa akhir pada GUI (Graphical User Interface). Bagian ini akan dibahas di bab Tata Letak.
Behavior- Ini adalah peristiwa yang terjadi saat pengguna berinteraksi dengan elemen UI. Bagian ini akan dibahas dalam bab Penanganan Acara.
JavaFX menyediakan beberapa kelas dalam paket tersebut javafx.scene.control. Untuk membuat berbagai komponen GUI (kontrol), JavaFX mendukung beberapa kontrol seperti pemilih tanggal, bidang teks tombol, dll.
Setiap kontrol diwakili oleh sebuah kelas; Anda dapat membuat kontrol dengan membuat instance kelasnya masing-masing.
Berikut ini adalah daftar kontrol yang umum digunakan saat GUI dirancang menggunakan JavaFX.
S.No | Kontrol & Deskripsi |
---|---|
1 | Label Objek Label adalah komponen untuk menempatkan teks. |
2 | Button Kelas ini membuat tombol berlabel. |
3 | ColorPicker ColorPicker menyediakan panel kontrol yang dirancang untuk memungkinkan pengguna memanipulasi dan memilih warna. |
4 | CheckBox Kotak Centang adalah komponen grafis yang bisa dalam keadaan hidup (benar) atau mati (salah). |
5 | RadioButton Kelas RadioButton adalah komponen grafis, yang bisa dalam status ON (true) atau OFF (false) dalam grup. |
6 | ListView Komponen ListView menyajikan kepada pengguna daftar gulir item teks. |
7 | TextField Objek TextField adalah komponen teks yang memungkinkan pengeditan satu baris teks. |
8 | PasswordField Objek PasswordField adalah komponen teks yang dikhususkan untuk entri kata sandi. |
9 | Scrollbar Kontrol Scrollbar mewakili komponen scroll bar untuk memungkinkan pengguna memilih dari rentang nilai. |
10 | FileChooser Kontrol FileChooser mewakili jendela dialog tempat pengguna dapat memilih file. |
11 | ProgressBar Saat tugas berlanjut ke penyelesaian, bilah kemajuan menampilkan persentase penyelesaian tugas. |
12 | Slider Penggeser memungkinkan pengguna memilih nilai secara grafis dengan menggeser kenop dalam interval terbatas. |
Contoh
Program berikut adalah contoh yang menampilkan halaman login di JavaFX. Di sini, kami menggunakan kontrollabel, text field, password field dan button.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac LoginPage.java
java LoginPage
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Program berikut adalah contoh formulir pendaftaran, yang mendemonstrasikan kontrol di JavaFX seperti Date Picker, Radio Button, Toggle Button, Check Box, List View, Choice List, dll.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac Registration.java
java Registration
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.
Secara umum, bagan adalah representasi data secara grafis. Ada berbagai macam grafik untuk merepresentasikan data sepertiBar Chart, Pie Chart, Line Chart, Scatter Chart, dll.
JavaFX Menyediakan dukungan untuk berbagai Pie Charts dan XY Charts. Grafik yang direpresentasikan pada bidang XY meliputiAreaChart, BarChart, BubbleChart, LineChart, ScatterChart, StackedAreaChart, StackedBarChart, dll.
Setiap grafik diwakili oleh sebuah kelas dan semua grafik ini milik paket javafx.scene.chart. Kelas bernamaChart adalah kelas dasar dari semua grafik di JavaFX dan XYChart adalah kelas dasar dari semua grafik yang digambar pada bidang XY.
Membuat Bagan
Untuk membuat bagan, Anda perlu -
- Tentukan sumbu grafik
- Instantiate kelas masing-masing
- Persiapkan dan berikan data ke bagan
Instansiasi Kelas Masing-masing
Untuk membuat bagan, buat instance kelasnya masing-masing. Misalnya, jika Anda ingin membuat diagram garis, Anda perlu membuat instance kelas bernamaLine sebagai berikut -
LineChart linechart = new LineChart(xAxis, yAxis);
Seperti yang diamati pada kode di atas, saat membuat instance, Anda harus meneruskan dua objek yang masing-masing mewakili sumbu X dan Y dari diagram.
Mendefinisikan Axis
Secara umum, sumbu grafik dapat diwakili oleh -
- Angka-angka seperti Populasi, Umur dan
- Kategori seperti Hari dalam Seminggu, Negara.
Di JavaFX, sumbu adalah kelas abstrak yang mewakili sumbu X atau Y. Ini memiliki dua subclass untuk mendefinisikan setiap jenis sumbu, yaituCategoryAxis dan NumberAxis seperti yang ditunjukkan pada diagram berikut -
Category Axis- Dengan membuat instance kelas ini, Anda dapat menentukan (membuat) sumbu X atau Y di mana setiap nilai mewakili kategori. Anda dapat menentukan sumbu Kategori dengan membuat instance kelas ini seperti yang ditunjukkan di bawah ini -
CategoryAxis xAxis = new CategoryAxis();
Untuk sumbu ini, Anda perlu mengatur daftar kategori dan label ke sumbu seperti yang ditunjukkan di bawah ini -
//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- Dengan membuat instance kelas ini, Anda dapat menentukan (membuat) sumbu X atau Y di mana setiap nilai mewakili nilai Numerik. Anda dapat menggunakan jenis Nomor apa pun dengan iniAxis, Long, Double, BigDecimal, dll. Anda dapat menentukan sumbu Angka dengan membuat instance kelas ini sebagai berikut -
//Defining the axis
NumberAxis yAxis = new NumberAxis();
//Setting labelto the axis
yAxis.setLabel("name of the axis");
Meneruskan Data ke Grafik XY
Semua diagram XY ditampilkan di sepanjang bidang XY. Untuk memplot sekumpulan titik dalam grafik, kita perlu menentukan serangkaian koordinat XY.
Itu <X,Y> kelas dari javafx.scene.chartpackage adalah kelas yang digunakan, Anda dapat mengirim data ke bagan. Kelas ini memiliki daftar seri bernama yang dapat diamati. Anda bisa mendapatkan daftar ini menggunakangetData() metode dari XYChart.Series kelas seperti yang ditunjukkan di bawah ini -
ObservableList list = series.getData();
Dimana, series adalah objek dari XYChart.Serieskelas. Anda dapat menambahkan data ke daftar ini menggunakanadd() metode sebagai berikut -
list.add(new XYChart.Data(x-axis data, y-axis data));
Kedua baris ini dapat ditulis bersama seperti yang ditunjukkan di bawah ini -
series.getData().add(new XYChart.Data(x-axis data, y-axis data));
Tabel berikut memberikan deskripsi berbagai grafik (kelas) yang disediakan oleh JavaFX -
S.No | Bagan & Deskripsi |
---|---|
1 | Pie chart Diagram lingkaran adalah representasi nilai sebagai irisan lingkaran dengan warna berbeda. Irisan ini diberi label dan nilai yang sesuai dengan setiap irisan ditunjukkan dalam bagan. Di JavaFX, diagram lingkaran diwakili oleh kelas bernama PieChart. Kelas ini termasuk dalam paketjavafx.scene.chart. |
2 | Diagram Garis Bagan garis atau grafik garis menampilkan informasi sebagai rangkaian titik data (penanda) yang dihubungkan oleh segmen garis lurus. Diagram Garis menunjukkan bagaimana data berubah pada frekuensi waktu yang sama. Di JavaFX, diagram garis diwakili oleh kelas bernama LineChart. Kelas ini termasuk dalam paketjavafx.scene.chart. Dengan membuat instance kelas ini, Anda dapat membuat node LineChart di JavaFX. |
3 | Bagan Area Bagan area digunakan untuk menggambar bagan berbasis area. Ini memplot area antara rangkaian titik dan sumbu yang diberikan. Secara umum, bagan ini digunakan untuk membandingkan dua besaran. Di JavaFX, bagan Area diwakili oleh kelas bernama AreaChart. Kelas ini termasuk dalam paketjavafx.scene.chart. Dengan membuat instance kelas ini, Anda dapat membuat node AreaChart di JavaFX. |
4 | Grafik batang Bagan batang digunakan untuk merepresentasikan data yang dikelompokkan menggunakan batang persegi panjang. Panjang batang-batang ini menggambarkan nilai-nilainya. Batang pada diagram batang dapat diplot secara vertikal atau horizontal. Di JavaFX, Bagan batang diwakili oleh kelas bernama BarChart. Kelas ini termasuk dalam paketjavafx.scene.chart. Dengan membuat instance kelas ini, Anda dapat membuat node BarChart di JavaFX. |
5 | Bagan Gelembung Diagram gelembung digunakan untuk melapisi data tiga dimensi. Dimensi ketiga akan diwakili oleh ukuran (radius) gelembung. Di JavaFX, bagan gelembung diwakili oleh kelas bernama BubbleChart. Kelas ini termasuk dalam paketjavafx.scene.chart. Dengan membuat instance kelas ini, Anda dapat membuat node BubbleChart di JavaFX. |
6 | Bagan Sebar Scatterplot adalah jenis grafik yang menggunakan nilai dari dua variabel yang diplot dalam bidang Cartesian. Biasanya digunakan untuk mengetahui hubungan antara dua variabel. Di JavaFX, bagan Sebar diwakili oleh kelas bernama ScatterChart. Kelas ini termasuk dalam paketjavafx.scene.chart. Dengan membuat instance kelas ini, Anda dapat membuat node ScatterChart di JavaFX. |
7 | Bagan Area Bertumpuk Di JavaFX, bagan Area Bertumpuk diwakili oleh kelas bernama StackedAreaChart. Kelas ini termasuk dalam paket javafx.scene.chart. Dengan membuat instance kelas ini, Anda dapat membuat node StackedAreaChart di JavaFX. |
8 | Bagan Batang Bertumpuk Di JavaFX, bagan Stacked Bar diwakili oleh kelas bernama StackedBarChart. Kelas ini termasuk dalam paket javafx.scene.chart. Dengan membuat instance kelas ini, Anda dapat membuat node StackedBarChart di JavaFX. |
Setelah membangun semua node yang diperlukan dalam sebuah adegan, kami biasanya akan mengaturnya secara berurutan.
Susunan komponen di dalam wadah ini disebut Tata Letak wadah. Kami juga dapat mengatakan bahwa kami mengikuti tata letak karena termasuk menempatkan semua komponen pada posisi tertentu di dalam wadah.
JavaFX menyediakan beberapa tata letak standar seperti HBox, VBox, Border Pane, Stack Pane, Text Flow, Anchor Pane, Title Pane, Grid Pane, Flow Panel, dll.
Setiap tata letak yang disebutkan di atas diwakili oleh sebuah kelas dan semua kelas ini milik paket javafx.layout. Kelas bernamaPane adalah kelas dasar dari semua tata letak di JavaFX.
Membuat Tata Letak
Untuk membuat tata letak, Anda perlu -
- Buat node.
- Buat instance kelas masing-masing dari tata letak yang diperlukan.
- Setel properti tata letak.
- Tambahkan semua node yang dibuat ke tata letak.
Membuat Node
Pertama-tama, buat node yang diperlukan dari aplikasi JavaFX dengan membuat instance kelasnya masing-masing.
Misalnya, jika Anda ingin memiliki bidang teks dan dua tombol yaitu, putar dan berhenti dalam tata letak HBox - Anda harus membuat simpul tersebut terlebih dahulu seperti yang ditunjukkan pada blok kode berikut -
//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");
Instansiasi Kelas Masing-masing
Setelah membuat node (dan menyelesaikan semua operasinya), buat instance kelas dari tata letak yang diperlukan.
Misalnya, jika Anda ingin membuat tata letak Hbox, Anda perlu membuat instance kelas ini sebagai berikut.
HBox hbox = new HBox();
Mengatur Properti Tata Letak
Setelah membuat instance kelas, Anda perlu menyetel properti layout menggunakan metode penyetelnya masing-masing.
Misalnya - Jika Anda ingin mengatur spasi antara node yang dibuat dalam layout HBox, maka Anda perlu mengatur nilai ke properti bernama spacing. Ini dapat dilakukan dengan menggunakan metode penyetelsetSpacing() seperti yang ditunjukkan di bawah ini -
hbox.setSpacing(10);
Menambahkan Objek Bentuk ke Grup
Terakhir, Anda perlu menambahkan objek bentuk ke grup dengan meneruskannya sebagai parameter konstruktor seperti yang ditunjukkan di bawah ini.
//Creating a Group object
Group root = new Group(line);
Panel Tata Letak
Berikut adalah berbagai panel Tata Letak (kelas) yang disediakan oleh JavaFX. Kelas-kelas ini ada di dalam paketjavafx.scene.layout.
S.No | Bentuk & Deskripsi |
---|---|
1 | HBox Tata letak HBox mengatur semua node dalam aplikasi kita dalam satu baris horizontal. Kelas bernama HBox dari paket javafx.scene.layout mewakili tata letak kotak horizontal teks. |
2 | VBox Tata letak VBox mengatur semua node dalam aplikasi kita dalam satu kolom vertikal. Kelas bernama VBox dari paket javafx.scene.layout mewakili tata letak kotak vertikal teks. |
3 | BorderPane Tata letak Border Pane mengatur node dalam aplikasi kita di posisi atas, kiri, kanan, bawah dan tengah. Kelas bernama BorderPane dari paket javafx.scene.layout mewakili tata letak panel perbatasan. |
4 | StackPane Tata letak panel tumpukan mengatur node dalam aplikasi kita di atas yang lain seperti dalam tumpukan. Node yang ditambahkan pertama ditempatkan di bagian bawah tumpukan dan node berikutnya ditempatkan di atasnya. Kelas bernama StackPane dari paket javafx.scene.layout mewakili tata letak panel tumpukan. |
5 | TextFlow Tata letak Alur Teks mengatur beberapa node teks dalam satu aliran. Kelas bernama TextFlow dari paket javafx.scene.layout mewakili tata letak aliran teks. |
6 | AnchorPane Tata letak panel Anchor menjangkarkan node dalam aplikasi kita pada jarak tertentu dari panel. Kelas bernama AnchorPane dari paket javafx.scene.layout mewakili tata letak Anchor Pane. |
7 | TilePane Tata letak Tile Pane menambahkan semua node aplikasi kita dalam bentuk ubin berukuran seragam. Kelas bernama TilePane dari paket javafx.scene.layout mewakili tata letak TilePane. |
8 | GridPane Tata letak Grid Pane mengatur node dalam aplikasi kita sebagai grid baris dan kolom. Tata letak ini berguna saat membuat formulir menggunakan JavaFX. Kelas bernama GridPane dari paket javafx.scene.layout mewakili tata letak GridPane. |
9 | FlowPane Tata letak panel aliran membungkus semua node dalam aliran. Panel aliran horizontal membungkus elemen panel pada ketinggiannya, sementara panel aliran vertikal membungkus elemen dengan lebarnya. Kelas bernama FlowPane dari paket javafx.scene.layout mewakili tata letak Flow Pane. |
Cascading Style Sheets, juga disebut sebagai CSS, adalah bahasa desain sederhana yang dimaksudkan untuk menyederhanakan proses pembuatan halaman web yang rapi.
CSS menangani tampilan dan nuansa bagian dari halaman web. Dengan menggunakan CSS, Anda dapat mengontrol warna teks, gaya font, jarak antar paragraf, ukuran kolom dan tata letak. Selain itu, Anda juga dapat mengontrol gambar atau warna latar belakang yang digunakan, desain tata letak, variasi tampilan untuk berbagai perangkat dan ukuran layar serta berbagai efek lainnya.
CSS di JavaFX
JavaFX memberi Anda fasilitas menggunakan CSS untuk meningkatkan tampilan dan nuansa aplikasi. Paketjavafx.css berisi kelas yang digunakan untuk menerapkan CSS untuk aplikasi JavaFX.
CSS terdiri dari aturan gaya yang diinterpretasikan oleh browser dan kemudian diterapkan ke elemen terkait dalam dokumen Anda.
Aturan gaya dibuat dari tiga bagian, yaitu -
Selector- Selektor adalah tag HTML tempat gaya akan diterapkan. Ini bisa berupa tag apa saja<h1> atau <table>, dll.
Property- Properti adalah jenis atribut dari tag HTML. Sederhananya, semua atribut HTML diubah menjadi properti CSS. Bisa jadi warna,border, dll.
Value- Nilai ditetapkan ke properti. Misalnya, properti warna dapat memiliki nilaired atau #F1F1F1, dll.
Anda dapat menempatkan Sintaks Aturan Gaya CSS sebagai berikut -
selector { property: value }
Style sheet default yang digunakan oleh JavaFX adalah modena.css. Itu ditemukan di jar runtime JavaFX.
Menambahkan Lembar Gaya Anda sendiri
Anda dapat menambahkan style sheet Anda sendiri ke scene di JavaFX sebagai berikut -
Scene scene = new Scene(new Group(), 500, 400);
scene.getStylesheets().add("path/stylesheet.css");
Menambahkan Lembar Gaya Inline
Anda juga dapat menambahkan gaya sebaris menggunakan setStyle()metode. Gaya ini hanya terdiri dari pasangan nilai-kunci dan dapat diterapkan ke node tempat mereka ditetapkan. Berikut ini adalah contoh kode pengaturan lembar gaya sebaris menjadi tombol.
.button {
-fx-background-color: red;
-fx-text-fill: white;
}
Contoh
Asumsikan bahwa kita telah mengembangkan aplikasi JavaFX yang menampilkan formulir dengan Bidang Teks, Bidang Sandi, Dua Tombol. Secara default, formulir ini terlihat seperti yang ditunjukkan pada tangkapan layar berikut -
Program berikut adalah contoh yang menunjukkan bagaimana menambahkan gaya ke aplikasi di atas di JavaFX.
Simpan kode ini dalam file dengan nama 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);
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut.
javac CssExample.java
java CssExample
Saat menjalankan, program di atas menghasilkan jendela JavaFX seperti yang ditunjukkan di bawah ini.