Saya melihatnya berbeda dari jawaban yang diterima.
1) Haruskah saya sepenuhnya menghindari penggunaan metode-metode itu?
Jangan pernah menghindar! Mereka ada di sana untuk mengekspresikan batasan ukuran komponen Anda ke manajer tata letak. Anda dapat menghindari menggunakannya jika Anda tidak menggunakan pengelola tata letak apa pun dan mencoba mengelola tata letak visual sendiri.
Sayangnya, Swing tidak hadir dengan dimensi standar yang wajar. Namun, alih-alih mengatur dimensi komponen, lebih baik OOP untuk menurunkan komponen Anda sendiri dengan standar yang wajar. (Dalam hal ini Anda memanggil setXXX di kelas turunan Anda.) Atau, Anda dapat mengganti metode getXXX untuk efek yang sama.
2) Metode telah ditetapkan karena suatu alasan. Jadi kapan saya harus menggunakannya? Dalam konteks apa? Untuk tujuan apa?
Selalu. Saat Anda membuat komponen, atur ukuran min / prefer / max yang realistis sesuai dengan penggunaan komponen itu. Misalnya, jika Anda memiliki JTextField untuk memasukkan simbol negara seperti Inggris, ukuran pilihannya akan selebar dua karakter (dengan font saat ini, dll.) Tetapi mungkin tidak ada artinya membiarkannya tumbuh lebih besar. Bagaimanapun, simbol negara adalah dua karakter. Sebaliknya, jika Anda memiliki JTextField untuk memasukkan misalnya nama pelanggan, itu bisa memiliki ukuran yang disukai untuk seperti ukuran piksel untuk 20 karakter, tetapi dapat tumbuh menjadi lebih besar jika tata letak diubah ukurannya, jadi atur ukuran maksimum menjadi lebih banyak. Pada saat yang sama, memiliki lebar JTextField 0px tidak ada gunanya, jadi atur ukuran minimum yang realistis (saya akan mengatakan ukuran piksel 2 karakter).
3) Apa sebenarnya konsekuensi negatif dari penggunaan metode tersebut?
(Saya hanya bisa berpikir menambahkan portabilitas antara sistem dengan resolusi layar yang berbeda).
Tidak ada konsekuensi negatif. Ini adalah petunjuk untuk pengelola tata letak.
4) Saya tidak berpikir LayoutManager dapat dengan tepat memenuhi semua kebutuhan tata letak yang diinginkan.
Apakah saya benar-benar perlu menerapkan LayoutManager baru untuk setiap variasi kecil pada layout saya?
Tidak, tentu saja tidak. Pendekatan yang biasa dilakukan adalah dengan memanipulasi tata letak dasar yang berbeda seperti tata letak horizontal dan vertikal.
Misalnya, tata letak di bawah ini:
<pre>
+--------------+--------+
| ###JTABLE### | [Add] |
| ...data... |[Remove]|
| ...data... | |
| ...data... | |
+--------------+--------+
</pre>
memiliki dua bagian. Bagian kiri dan kanan adalah tata letak horizontal. Bagian kanan adalah JPanel yang ditambahkan ke tata letak horizontal, dan JPanel ini memiliki tata letak vertikal yang menjabarkan tombol-tombol secara vertikal.
Tentu saja, ini bisa menjadi rumit dengan tata letak kehidupan nyata. Oleh karena itu manajer tata letak berbasis kisi seperti MigLayout jauh lebih baik jika Anda ingin mengembangkan sesuatu yang serius.
5) Jika jawaban ke 4 adalah "ya", tidakkah ini akan menyebabkan proliferasi kelas LayoutManager yang akan menjadi sulit dipertahankan?
Tidak, Anda pasti tidak akan mengembangkan manajer tata letak, kecuali jika Anda memerlukan sesuatu yang sangat istimewa.
6) Dalam situasi di mana saya perlu mendefinisikan proporsi ...
antara anak-anak dari Komponen (misalnya, child1 harus menggunakan ruang 10%, child2 40%, child3 50%), apakah mungkin untuk mencapai itu tanpa menerapkan LayoutManager kustom?
Pada dasarnya, setelah ukuran yang diinginkan diatur dengan benar, Anda mungkin tidak ingin melakukan apa pun dalam persentase. Sederhananya, karena persentase tidak ada gunanya (misalnya tidak ada gunanya memiliki JTextField 10% dari ukuran jendela - karena seseorang dapat mengecilkan jendela sehingga JTextField menjadi lebar 0px, atau dapat memperluas jendela sehingga JTextField berada di dua tampilan pada sebuah layar pengaturan multi-display).
Tapi, mungkin kali Anda dapat menggunakan persentase untuk mengontrol ukuran blok bangunan yang lebih besar dari gui Anda (panel, misalnya).
Anda dapat menggunakan JSplitPane di mana Anda dapat mengatur sebelumnya rasio kedua sisi. Atau, Anda dapat menggunakan MigLayout yang memungkinkan Anda mengatur batasan seperti itu dalam persentase, piksel, dan unit lainnya.
JEditorPane
dengan HTML yang tidak dengan sendirinya menyarankan lebar. OTOH Saya tidak yakin apakah saya melewatkan sesuatu. Saya akan dengan hati-hati meninjau balasan di utas, tetapi tertarik jika Anda memiliki komentar, terutama pada kasus terakhir.