JavaFX adalah perpustakaan standar baru yang digunakan di Java untuk membangun aplikasi grafis, tetapi banyak programmer masih tetap menggunakan ayunan atau bahkan awt. Berikut adalah beberapa saran tentang cara membangun aplikasi yang responsif dan cepat dengan fitur -fitur luar biasa baru di set alat JavaFX!
1. Nilai atribut
Jika Anda memiliki pemahaman lengkap tentang komponen JavaFX, Mobile telah menemukan properti. Hampir setiap nilai di pustaka FX dapat diamati, lebar partisi, ukuran gambar, teks dalam label, item anak dalam daftar, dan status kotak centang. Atribut dibagi menjadi alternatif: atribut yang dapat ditulis dan atribut yang dapat dibaca. Nilai yang dapat ditulis dapat dimodifikasi, baik menggunakan metode setter atau secara langsung. JavaFX menangani proses penanganan acara dan memastikan bahwa setiap komponen yang tergantung pada properti ini diberitahu. Properti yang dapat dibaca memiliki metode yang memungkinkan Anda menerima pemberitahuan ketika nilainya dimodifikasi.
Contoh:
// name stringProperty string yang dapat dibaca dan ditulis = new SimpleStringProperty ("emil"); // read-only ObservableanValue nameIsempty = name.isempty ();2. Nilai Bind
Ketika Anda memiliki nilai yang dapat ditulis dan dapat dibaca, Anda dapat mulai mendefinisikan aturan tentang bagaimana nilai -nilai ini terkait. Properti yang dapat ditulis dapat terikat pada properti yang dapat dibaca, sehingga nilainya akan selalu cocok dengan yang dapat dibaca. Binding tidak segera terjadi, tetapi akan dilakukan sebelum nilainya diamati (dan lihat apa yang saya lakukan di sana). Ikatan bisa satu arah atau dua arah. Tentu saja, jika mereka dua arah, kedua properti harus dapat ditulis.
Contoh:
Textfield fielda = TextField baru (); TextField FieldB = TextField baru (); fielda.prefwidthproperty (). Bind (fieldb.widthproperty ());
3. Daftar yang dapat diamati
Atribut bukan satu -satunya hal yang dapat diamati. Jika daftar dienkapsulasi ke dalam daftar pengamatan, maka anggota daftar juga dapat diamati. Model respons Distist Observable cukup maju. Anda tidak hanya dapat menerima pemberitahuan ketika daftar dimodifikasi, tetapi juga melihat bagaimana daftar dimodifikasi.
Contoh:
Daftar <String> OtherList = arrays.aslist ("foo", "bar", "bar"); ObservableList <String> list = fxcollection.observableList (OtherList); list.addlistener ((listChangelistener.change <? Extends string> change) -> {System.out.printlner. (Change.wasadded ()) {System.out.println ("Item" + Change.getAddedSublist () + "ditambahkan.")} if (change.wasremoved ()) {System.out.println ("item" + ubah. list.set (1, "foo"); System.out.println ("Daftar Baru:" + Daftar);Output yang berjalan dari kode di atas adalah sebagai berikut:
Daftar Lama: [Foo, Bar, Bar] Menerima Event.Items [foo] ditambahkan.
Seperti yang Anda lihat, operasi pengaturan hanya akan memicu suatu acara sekali.
4. StringConverter
Terkadang Anda akan menemukan bahwa Anda tidak perlu mengekstrak nilai -nilai dari komponen saat Anda ingin membuat ikatan. Contoh khas dari ini adalah bahwa Anda memiliki stringproperty dengan jalur yang Anda dapatkan dari Textfield. Jika Anda ingin memiliki properti yang dapat diamati dengan nilai ini yang direpresentasikan sebagai jalur, Anda perlu membuat StringConverter untuk itu.
Contoh:
TextField FileLocation = new TextField (); StringProperty Location = FileLocation.TextProperty (); Properti <Path> path = new SimpleObjectProperty <> (); Binding.BindBidIrectional (Lokasi, Path, StringConverter baru <Path> () {@Override Public String ToString (path path) {return path.toString ();} @Override Path Path FromString (String String) {return paths.get (string);}});Properti objek bukan binding dua arah ke nilai bidang teks.
5. Ekspresi
Menggunakan kelas binding di atas, Anda dapat membuat jenis ekspresi apa pun. Misalnya, Anda memiliki dua bidang teks yang memungkinkan pengguna untuk memasukkan informasi. Sekarang saya ingin mendefinisikan domain baca saja, yang akan selalu berisi string. Jika panjang kedua string sama, kedua string akan dicampur bersama-sama interval karakter demi karakter untuk tampilan. Jika panjangnya tidak sama, pesan bantuan ditampilkan.
Contoh:
Textfield first = new TextField (); TextField Second = new TextField (); TextField Mix = new TextField (); mix.textProperty (). bind (binding.when (first.lengthProperty (). isEqualto (Second.lengthProperty ())) .then (binding.createStringBinding () -> {int length = first.lengthProperty (). get (); string firsttext = first.ty. Second.textProperty (). Get (); )). Jika tidak ("Harap masukkan dua string dengan panjang yang persis sama."));Ini hanya sedikit dari banyak fitur JavaFX. Semoga Anda dapat menemukan lebih banyak cara kreatif untuk memanfaatkan sistem acara ini!