JavaFX adalah pilihan pertama untuk pembangunan aplikasi desktop Java moden, menggantikan swing kerana ia menyediakan komponen UI moden, sokongan gaya CSS, antara muka pemisahan dan logik FXML, kesan animasi terbina dalam, perkakasan dipercepatkan dan alat reka bentuk visual pembina; 1. Gunakan Maven atau mengkonfigurasi SDK JavaFX secara manual untuk membina persekitaran projek; 2. Buat program utama yang mewarisi kelas aplikasi dan membina antara muka melalui panggung, adegan dan nod; 3. Gunakan FXML untuk menentukan struktur UI dan menggabungkannya dengan pengawal untuk mencapai pemisahan MVC; 4. Gunakan CSS untuk mencantikkan gaya dan memuatkannya melalui getStylesheets (); 5. Ikuti Amalan Terbaik: Gunakan mod MVC/MVVM, Builder Scene adalah reka bentuk pantas, pengikatan atribut JavaFX, dan tugas yang memakan masa dilakukan dalam benang latar belakang untuk mengelakkan menyekat benang UI; 6. Modul konfigurasi sistem modular pilihan-pilihan-info.java dikonfigurasi untuk menyokong refleksi dan pemuatan FXML; Akhirnya, aplikasi desktop Java dengan struktur yang jelas, penyelenggaraan yang kuat dan kemodenan visual boleh dibina.
Java telah datang jauh sejak hari -hari awal AWT dan Swing, dan hari ini, Javafx berdiri sebagai standard moden untuk membina aplikasi GUI desktop yang kaya dan responsif di Jawa. Walaupun Swing masih digunakan, JavaFX menawarkan rangka kerja yang lebih fleksibel, kuat, dan visual -terutamanya untuk aplikasi yang memerlukan animasi, sokongan media, atau komponen UI tersuai.

Jika anda memulakan projek desktop baru di Java, Javafx adalah cara untuk pergi. Berikut adalah panduan praktikal untuk membantu anda bangun dan berjalan dengan pembangunan Java GUI moden menggunakan JavaFX.
Mengapa javafx over swing?
Sebelum menyelam, patut difahami mengapa Javafx lebih disukai untuk projek baru:

- Komponen UI moden : Javafx termasuk kawalan terkini (contohnya, pemetik tarikh, paparan web, carta) keluar dari kotak.
- CSS Styleling : Anda boleh gaya UI anda dengan CSS, seperti aplikasi web.
- Sokongan FXML : Reka bentuk antara muka anda dalam XML (FXML) dan logik berasingan dari persembahan.
- Animasi & Kesan Terbina : API yang mudah digunakan untuk peralihan, transformasi, dan kesan visual.
- Percepatan perkakasan : Leverages GPU melalui Prism Rendering Engine untuk prestasi yang lebih lancar.
- FXML Scene Builder : Drag-and-drop Reka bentuk UI dengan alat seperti Gluon Scene Builder.
Swing tidak mati, tetapi Javafx jelas masa depan untuk aplikasi desktop Java.
Menyiapkan Javafx dalam projek anda
Salah satu halangan terbesar hari ini ialah Javafx tidak lagi dibundel dengan JDK bermula dari Java 11. Anda perlu menambahnya sebagai kebergantungan yang berasingan.

Pilihan 1: Menggunakan Maven
Tambahkan kebergantungan berikut ke pom.xml
anda (ganti VERSION
dengan yang terkini):
<dependencies> <geterlihat> <groupId> org.openjfx </groupId> <stifactid> Javafx-Controls </artifactid> <versi> 20.0.1 </versi> </ketergantungan> <geterlihat> <groupId> org.openjfx </groupId> <stifactid> javafx-fxml </artifactid> <versi> 20.0.1 </versi> </ketergantungan> </dependencies> <build> <sugin> <sugin> <groupId> org.openjfx </groupId> <stifactid> javafx-maven-plugin </artifactid> <versi> 0.0.8 </versi> <Secution> <Execution> <Id> Default-cli </id> <figuration> <sainclass> com.example.helloapplication </mainclass> </konfigurasi> </pelaksanaan> </pelaksanaan> </plugin> </plugin> </binaan>
Pilihan 2: Manual SDK (untuk IDE seperti Intelij atau Eclipse)
Muat turun javafx sdk dari http://ipnx.cn/link/eadd2c9c45ec261d4ae66276556fbd55 , kemudian:
- Dalam Intellij: Pergi ke Struktur Projek → Perpustakaan → Tambah Javafx SDK
- Tambahkan pilihan VM semasa berjalan:
--modul-path/path/to/javafx-sdk-20/lib --add-modul javafx.controls, javafx.fxml
Petua Pro: Gunakan plugin Javafx Maven untuk mengelakkan argumen VM secara manual setiap kali.
Membuat aplikasi JavaFx asas
Setiap aplikasi Javafx memanjangkan javafx.application.Application
. Inilah contoh minimum:
Kelas awam HelloApplication memanjangkan aplikasi { @Override permulaan void awam (peringkat pentas) { Label label = Label baru ("Hello, Javafx!"); Adegan adegan = adegan baru (baru vbox (label), 300, 200); stage.settitle ("aplikasi saya"); stage.setscene (adegan); stage.show (); } public static void main (string [] args) { pelancaran (); } }
Komponen utama:
- Peringkat : Tingkap utama.
- Adegan : Kontena untuk elemen UI.
- Nod : Kawalan UI seperti
Label
,Button
,VBox
, dll.
Gunakan panel susun atur ( VBox
, HBox
, GridPane
, BorderPane
) untuk mengatur kandungan.
Menggunakan FXML untuk reka bentuk UI yang bersih
Untuk aplikasi yang lebih besar, elakkan menulis UI dalam kod Java. Sebaliknya, gunakan bahasa berasaskan XML FXML untuk menentukan antara muka anda.
Contoh: hello-view.fxml
<? xml version = "1.0" encoding = "utf-8"?> <? import javafx.scene.control.*?> <? import javafx.scene.layout.*?> <Vbox Alignment = "Center" Spacing = "20" xmlns = "http://javafx.com/javafx"> <Label text = "Selamat datang!" /> <Butang teks = "klik saya" onaction = "#onbuttonclick" /> </Vbox>
Kelas pengawal
kelas awam Hellocontroller { @Fxml void peribadi onbuttonclick () { System.out.println ("Butang diklik!"); } }
Muatkan FXML dalam aplikasi utama
Kelas awam HelloApplication memanjangkan aplikasi { @Override Awam Void Start (Peringkat Peringkat) melemparkan IOException { Fxmlloader fxmlloader = fxmlloader baru (helloApplication.class.getResource ("hello-view.fxml")); Adegan adegan = adegan baru (fxmlloader.load (), 300, 200); stage.settitle ("fxml app"); stage.setscene (adegan); stage.show (); } public static void main (string [] args) { pelancaran (); } }
Pemisahan ini menjadikan UI dan logik anda bersih dan dapat dipelihara.
Gaya dengan CSS
JavaFX menyokong CSS untuk gaya, yang menjadikan Skinning aplikasi anda lebih mudah.
Buat style.css
file.css:
.Root { -fx-background-color: #f0f0f0; } .label { -fx-font-saiz: 18px; -fx-text-fill: #333; } .button { -fx-font-saiz: 14px; -fx-background-color: #4A76A8; -fx-text-fill: putih; } .button: hover { -fx-background-color: #3A5A78; }
Kemudian gunakannya di tempat kejadian:
scene.getStylesheets (). tambah (getClass (). getResource ("style.css"). toexternalform ());
Anda juga boleh menggunakan tema luaran seperti jmetro atau bootstrap gelap untuk penampilan beracun.
Amalan terbaik untuk pembangunan javafx moden
Gunakan corak MVC atau MVVM
Pastikan UI (Lihat), Logik (pengawal), dan data (model) berasingan. Pengawal FXML adalah bentuk asas MVC.Pembina adegan leverage
Gluon Scene Builder membolehkan anda merancang fail FXML secara visual untuk prototaip.Gunakan sifat dan pengikatan javafx
Mengikat elemen UI ke model data sehingga mereka mengemas kini secara automatik:label.TextProperty (). Bind (viewModel.MessageProperty ());
Jalankan tugas panjang pada benang latar belakang
Jangan sekali -kali menyekat benang aplikasi Javafx. GunakanTask
atauPlatform.runLater()
:Tugas <void> tugas = tugas baru <> () { @Override panggilan tidak sah yang dilindungi () { // kerja jangka panjang kembali null; } }; thread baru (tugas) .start ();
Modularize dengan modul Java 11 (pilihan)
Jika menggunakan modul (module-info.java
), termasuk:javafx.controls; javafx.fxml; membuka com.example ke javafx.fxml;
Pemikiran terakhir
JavaFX mungkin tidak bergaya seperti kerangka web atau mudah alih, tetapi ia tetap menjadi pilihan terbaik untuk membina aplikasi desktop silang platform di Java. Dengan alat seperti FXML, CSS, pembina adegan, dan sokongan komuniti yang kuat (melalui Gluon dan OpenJFX), pembangunan Java GUI moden lebih mudah diakses dari sebelumnya.
Sama ada anda membina alat dalaman, perisian pendidikan, atau aplikasi desktop penuh, Javafx memberi anda alat untuk melakukannya dengan betul.
Pada asasnya, berpegang pada JavaFX, gunakan FXML dan CSS, menguruskan benang dengan betul, dan pastikan seni bina anda bersih -dan anda akan mempunyai aplikasi Java GUI moden yang boleh dipelihara dalam masa yang singkat.
Atas ialah kandungan terperinci Panduan untuk Pembangunan Java Gui Moden dengan Javafx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Gunakan parameter -CP untuk menambah balang ke ClassPath, supaya JVM dapat memuatkan kelas dan sumber dalamannya, seperti Java -Cplibrary.Jarcom.Example.Main, yang menyokong pelbagai balang yang dipisahkan oleh titik -titik komisul atau kolon, dan juga boleh dikonfigurasikan melalui pembolehubah persekitaran kelas atau manifest.mf.

UseFile.createenewfile () tocreateafileonlyifitdoesneteTexist, mengelakkan penulisan; 2.preferfiles.createFile () darinio.2formodern, safeFileCreationThatFailSiffileexists;

Javaspi adalah mekanisme penemuan perkhidmatan terbina dalam JDK, dan melaksanakan pengembangan dinamik berorientasikan antara muka melalui ServicEloader. 1. Tentukan antara muka perkhidmatan dan buat fail yang dinamakan dengan nama penuh antara muka di bawah Meta-INF/Services/, dan tulis nama yang berkelayakan sepenuhnya kelas pelaksanaan; 2. Gunakan serviceLoader.load () untuk memuatkan kelas pelaksanaan, dan JVM secara automatik akan membaca konfigurasi dan instantiate; 3. Kontrak antara muka harus dijelaskan semasa reka bentuk, keutamaan sokongan dan pemuatan bersyarat, dan menyediakan pelaksanaan lalai; 4. Senario aplikasi termasuk akses saluran pelbagai pembayaran dan pengesahan pemalam; 5. Perhatikan prestasi, classpath, pengasingan pengecualian, keselamatan benang dan keserasian versi; 6. Dalam Java9, menyediakan boleh digunakan dalam kombinasi dengan sistem modul.

Gunakan kata kunci untuk melaksanakan antara muka. Kelas perlu menyediakan pelaksanaan khusus semua kaedah dalam antara muka. Ia menyokong pelbagai antara muka dan dipisahkan oleh koma untuk memastikan kaedahnya adalah umum. Kaedah lalai dan statik selepas Java 8 tidak perlu ditulis semula.

JavagenericsprovideCompile-timetypesafetyandeliminatecastingingbyallowingtypeparametersonclass, antara muka, andmethods; wildcards (?,? Extendstype ,? supertype) handleunknowntypeswithflexxibility.usoSoRdoRderWildwildwhoRderWildwildwildwildwilddwherwherwilderwilderwilderwilderwildloundwilder .1

Artikel ini meneroka mekanisme menghantar banyak permintaan HTTP pada soket TCP yang sama, iaitu, sambungan berterusan HTTP (Keep-Alive). Artikel ini menjelaskan perbezaan antara protokol HTTP/1.X dan HTTP/2, menekankan pentingnya sokongan pelayan untuk sambungan yang berterusan, dan bagaimana untuk mengendalikan sambungan dengan betul: Tepung Response Headers. Dengan menganalisis kesilapan biasa dan menyediakan amalan terbaik, kami berhasrat untuk membantu pemaju membina pelanggan HTTP yang cekap dan mantap.

Tutorial ini terperinci bagaimana untuk memproses arraylists bersarang dengan cekap yang mengandungi arraylists lain di Java dan menggabungkan semua elemen dalamannya ke dalam satu array. Artikel ini akan menyediakan dua penyelesaian teras melalui operasi flatmap API Java 8 Stream: pertama meratakan ke dalam senarai dan kemudian mengisi array, dan secara langsung mewujudkan array baru untuk memenuhi keperluan senario yang berbeza.

Jawapannya ialah menggunakan thread.currentThread ().
