Tôi đang thấy nó khác với câu trả lời được chấp nhận.
1) Tôi có nên tránh hoàn toàn việc sử dụng các phương pháp đó không?
Không bao giờ tránh! Chúng ở đó để thể hiện các ràng buộc kích thước của các thành phần của bạn với trình quản lý bố cục. Bạn có thể tránh sử dụng chúng nếu bạn không sử dụng bất kỳ trình quản lý bố cục nào và cố gắng tự mình quản lý bố cục trực quan.
Thật không may, Swing không đến với kích thước mặc định hợp lý. Tuy nhiên, thay vì đặt kích thước của một thành phần, OOP tốt hơn là hạ xuống thành phần của chính bạn với mặc định hợp lý. (Trong trường hợp đó, bạn gọi setXXX trong lớp con cháu của mình.) Ngoài ra, bạn có thể ghi đè các phương thức getXXX cho cùng một hiệu ứng.
2) Các phương pháp đã được xác định vì một lý do. Vậy khi nào tôi nên sử dụng chúng? Trong bối cảnh nào? Vì mục đích gì?
Luôn luôn. Khi bạn tạo một thành phần, hãy đặt kích thước tối thiểu / ưa thích / tối đa thực tế của nó theo việc sử dụng thành phần đó. Ví dụ: nếu bạn có JTextField để nhập các ký hiệu quốc gia như Vương quốc Anh, kích thước ưa thích của nó sẽ rộng bằng hai ký tự (với phông chữ hiện tại, v.v.) nhưng có lẽ sẽ vô nghĩa khi để nó lớn hơn nữa. Rốt cuộc, biểu tượng đất nước là hai ký tự. Ngược lại, nếu bạn có JTextField để nhập ví dụ như tên khách hàng, nó có thể có kích thước ưa thích như kích thước pixel cho 20 ký tự, nhưng có thể tăng lên lớn hơn nếu bố cục được thay đổi kích thước, vì vậy hãy đặt kích thước tối đa thành nhiều hơn. Đồng thời, việc có một JTextField rộng 0px là vô nghĩa, vì vậy hãy đặt kích thước tối thiểu thực tế (tôi sẽ nói kích thước pixel là 2 ký tự).
3) Chính xác những hậu quả tiêu cực của việc sử dụng các phương pháp đó là gì?
(Tôi chỉ có thể nghĩ thêm tính di động giữa các hệ thống có độ phân giải màn hình khác nhau).
Không có hậu quả tiêu cực. Đây là những gợi ý cho người quản lý bố trí.
4) Tôi không nghĩ rằng bất kỳ Trình quản lý bố cục nào có thể đáp ứng chính xác tất cả các nhu cầu bố trí mong muốn.
Tôi có thực sự cần phải triển khai một Trình quản lý bố cục mới cho mỗi biến thể nhỏ trên bố cục của mình không?
Không chắc chắn không. Cách tiếp cận thông thường là xếp tầng các cách bố trí cơ bản khác nhau như bố trí ngang và dọc.
Ví dụ: bố cục bên dưới:
<pre>
+--------------+--------+
| ###JTABLE### | [Add] |
| ...data... |[Remove]|
| ...data... | |
| ...data... | |
+--------------+--------+
</pre>
đang có hai phần. Phần bên trái và bên phải là một bố cục ngang. Phần bên phải là một JPanel được thêm vào bố cục theo chiều ngang và JPanel này có bố cục dọc để đặt các nút theo chiều dọc.
Tất nhiên, điều này có thể phát triển khó khăn với một bố cục thực tế. Do đó, các trình quản lý bố cục dựa trên lưới như MigLayout sẽ tốt hơn nhiều nếu bạn sắp phát triển bất cứ điều gì nghiêm trọng.
5) Nếu câu trả lời cho 4 là "có", điều này sẽ không dẫn đến sự phổ biến của các lớp LayoutManager sẽ trở nên khó duy trì?
Không, bạn chắc chắn sẽ không phát triển trình quản lý bố cục, trừ khi bạn cần một cái gì đó rất đặc biệt.
6) Trong tình huống tôi cần xác định tỷ lệ ...
giữa các con của Thành phần (ví dụ: child1 nên sử dụng 10% dung lượng, child2 40%, child3 50%), có thể đạt được điều đó mà không cần thực hiện Trình quản lý tùy chỉnh không?
Về cơ bản, một khi các kích thước ưa thích được đặt đúng, bạn có thể không muốn làm bất cứ điều gì theo tỷ lệ phần trăm. Đơn giản, bởi vì tỷ lệ phần trăm là vô nghĩa (ví dụ như vô nghĩa khi có JTextField 10% kích thước cửa sổ - vì người ta có thể thu nhỏ cửa sổ để JTextField trở nên rộng 0px hoặc có thể mở rộng cửa sổ để JTextField nằm trên hai màn hình trên một thiết lập đa màn hình).
Nhưng, đôi khi bạn có thể sử dụng tỷ lệ phần trăm để kiểm soát kích thước của các khối xây dựng lớn hơn của gui của bạn (ví dụ: bảng điều khiển).
Bạn có thể sử dụng JSplitPane nơi bạn có thể đặt trước tỷ lệ của hai bên. Hoặc, bạn có thể sử dụng MigLayout cho phép bạn đặt các ràng buộc đó theo tỷ lệ phần trăm, pixel và các đơn vị khác.
JEditorPane
với HTML không tự đề xuất chiều rộng. OTOH Tôi không chắc là tôi đã bỏ lỡ điều gì. Tôi sẽ xem xét cẩn thận các câu trả lời trên chủ đề, nhưng rất quan tâm nếu bạn có bất kỳ ý kiến nào, đặc biệt là về trường hợp sau.