Saat melakukan pra-penelitian untuk pertanyaan ini , saya menemukan bahwa tidak ada banyak informasi yang terorganisir dengan baik tentang praktik terbaik Java Swing di Internet. Jadi saya pikir saya akan memberikan Stack Exchange kesempatan untuk membangun One Great List itu.
Apa praktik terbaik dari pengembangan Java Swing? Apa yang Anda temukan bekerja untuk Anda, dan mengapa?
Jawaban:
Saya hanya bisa menjawab apa yang berhasil bagi saya. Komentator lain telah menunjukkan bahwa GUI Jawa pada umumnya jatuh ke dalam 'lembah aneh' dengan tampilan dan nuansa yang tidak terlalu asli, dan saya tidak membantah ini.
Manfaatkan API Tindakan dengan baik. Ini memungkinkan Anda merangkum berbagai tindakan yang akan dilakukan oleh pengguna dan memungkinkan Anda untuk menghubungkannya dengan pintasan, tombol akselerator, tombol, dan objek input lainnya dengan lebih mudah.
Gunakan manajer tata letak yang sesuai. GridBagLayout sangat kuat, tapi saya akan mengatakan bahwa itu tidak dapat dipertahankan tanpa jumlah komentar yang berlebihan. Ketika saya menjalankan alat analisis kode statis seperti Sonar pada aplikasi GUI yang lebih lama saya pertahankan, selalu menunjukkan jumlah angka ajaib yang sangat besar untuk membuat tata letak GridBags tepat. Saya sudah banyak sukses dengan GroupLayout, yang menghindari keharusan menentukan penyelarasan piksel-sempurna.
Jika Anda pikir Anda memerlukan JDialog ... Anda mungkin tidak. Kotak dialog mengerikan, dalam hal pengalaman pengguna - aplikasi ini memutuskan untuk menggunakannya untuk setiap menu dan formulir, dan untuk menegakkan aturan yang selalu ada di atas dengan cara yang aneh. Ini berubah menjadi mimpi buruk pemeliharaan ketika kami benar-benar perlu mengingatkan sesuatu pada menu. Cue frustrasi mengklik dialog yang tidak fokus - dan karenanya tidak bisa dihilangkan -.
Gunakan SwingWorker daripada menggulir multithreading Anda sendiri, jika perlu. Sangat mudah untuk memperpanjang SwingWorker dan melakukan tugas jangka panjang sambil memberikan pembaruan rutin kembali ke GUI. Pikirkan mengunduh pembaruan klien. Ini akan menangani penjadwalan utas pekerja untuk Anda dan memungkinkan Anda menerbitkan persentase unduhan kembali ke tampilan, sehingga Anda dapat memperbarui ProgressBar Anda atau apa pun yang Anda miliki.
Hanya itu yang bisa saya sarankan, dalam pengalaman yang diakui terbatas.
sumber
JDialog
baik-baik saja - selama Anda menggunakannya untuk dialog.JDialog
atau tidak).Saya akan mengatakan salah satu hal pertama adalah tidak bekerja secara langsung. Sistem tata letak di Swing (IMHO) mengerikan, dan mencoba membuat aplikasi substansial darinya adalah mimpi buruk.
Dua dari banyak manajer tata letak alternatif yang saya gunakan adalah tata letak MigLayout dan MultiSplitPane. MigLayout adalah tujuan yang lebih umum dan membuat tata letak yang dapat Anda pikirkan dengan cara yang mudah dan waras. MultiSplitPane lebih spesifik; Saya menggunakannya untuk membuat beberapa layout sederhana untuk GUI yang tidak memiliki banyak kerumitan.
EDIT : Ini tidak menggantikan ayunan . Jika Anda harus menggunakan Swing, Anda masih dapat menggunakan manajer Layout ini karena mereka hanya mengelola swing, bukan menggantinya.
Tentu saja alternatif yang lebih baik adalah tidak menggunakan Swing. Swing sangat dikritik karena mengerikan untuk dikerjakan, tidak terlihat asli , dan lambat. Ada banyak alternatif yang telah belajar dari ayunan apa yang tidak boleh dilakukan seperti Qt, SWT, dan saya pikir bahkan GTK. Ini adalah solusi jangka panjang yang bagus untuk sakit kepala Swing
EDIT : Seperti @Lord Torgamus mengatakan, ini tidak benar-benar tersedia jika Anda dipaksa untuk menggunakan Swing. Jika Anda akan menggunakan ini yang terbaik untuk menyelesaikan ini ketika Anda membuat proyek Anda, bukan 3/4 jalan melalui atau ketika mengambil aplikasi lawas.
Saya juga ingin mencatat bahwa sebagian besar GUI alternatif menggunakan pustaka asli agar terlihat seperti sistem operasi, kemudian kembali ke Swing atau GUI Java Murni lainnya.
sumber