Bunu kabul edilen cevaptan farklı görüyorum.
1) Bu yöntemlerin kullanımından tamamen kaçınmalı mıyım?
Asla kaçının! Bileşenlerinizin boyut sınırlamalarını mizanpaj yöneticisine ifade etmek için oradalar. Herhangi bir düzen yöneticisi kullanmıyorsanız bunları kullanmaktan kaçınabilirsiniz ve görsel düzeni kendi başınıza yönetmeye çalışabilirsiniz.
Ne yazık ki, Swing makul varsayılan boyutlarla gelmiyor. Bununla birlikte, bir bileşenin boyutlarını ayarlamak yerine, kendi bileşeninizi makul varsayılanlarla alçaltmak daha iyidir. (Bu durumda, alt sınıfınızda setXXX'i çağırırsınız.) Alternatif olarak, aynı etki için getXXX yöntemlerini geçersiz kılabilirsiniz.
2) Yöntemler bir nedenle tanımlanmıştır. Peki onları ne zaman kullanmalıyım? Hangi bağlamda? Hangi amaçlar için?
Her zaman. Bir bileşen oluşturduğunuzda, o bileşenin kullanımına göre gerçekçi min / tercih edilen / maks boyutunu ayarlayın. Örneğin, İngiltere gibi ülke sembollerini girmek için bir JTextField öğeniz varsa, tercih edilen boyutu iki karaktere (geçerli yazı tipiyle vb.) Sığacak kadar geniş olacaktır, ancak muhtemelen daha büyük büyümesine izin vermek anlamsızdır. Sonuçta, ülke sembolleri iki karakterdir. Tersi olarak, örneğin bir müşteri adı girmek için bir JTextField öğeniz varsa, 20 karakter için piksel boyutu gibi tercih edilen bir boyuta sahip olabilir, ancak düzen yeniden boyutlandırılırsa daha büyük büyüyebilir, bu nedenle maksimum boyutu daha fazla olarak ayarlayın. Aynı zamanda, 0px genişliğinde bir JTextField sahip olmak anlamsız, bu yüzden gerçekçi bir minimum boyutu ayarlayın (2 karakter piksel boyutunu söyleyebilirim).
3) Bu yöntemleri kullanmanın olumsuz sonuçları tam olarak nelerdir?
(Yalnızca farklı ekran çözünürlüğüne sahip sistemler arasında taşınabilirlik eklemeyi düşünebilirim).
Olumsuz sonuçları yok. Bunlar mizanpaj yöneticisi için ipuçları.
4) Herhangi bir LayoutManager'ın istenen tüm yerleşim ihtiyaçlarını tam olarak karşılayabileceğini düşünmüyorum.
Düzenimdeki her küçük değişiklik için gerçekten yeni bir LayoutManager uygulamam gerekiyor mu?
Hayır kesinlikle olmaz. Genel yaklaşım yatay ve dikey mizanpaj gibi farklı temel mizanpaj yöneticilerini kademelendirmektir.
Örneğin, aşağıdaki düzen:
<pre>
+--------------+--------+
| ###JTABLE### | [Add] |
| ...data... |[Remove]|
| ...data... | |
| ...data... | |
+--------------+--------+
</pre>
iki bölümden oluşuyor. Sol ve sağ kısımlar yatay bir yerleşim düzenidir. Sağ kısım yatay düzene eklenen bir JPanel'dir ve bu JPanel, düğmeleri dikey olarak düzenleyen dikey bir düzene sahiptir.
Tabii ki, bu gerçek bir yaşam düzeniyle zorlaşabilir. Bu nedenle, ciddi bir şey geliştirmek üzereyseniz MigLayout gibi ızgara tabanlı düzen yöneticileri çok daha iyidir.
5) Eğer 4'e verilen cevap "evet" ise, bu, bakımı zorlaşan LayoutManager sınıflarının çoğalmasına neden olmaz mı?
Hayır, çok özel bir şeye ihtiyacınız olmadıkça kesinlikle düzen yöneticileri geliştirmeyeceksiniz.
6) Oranları tanımlamam gereken bir durumda ...
bir Bileşenin çocukları arasında (örneğin, child1% 10 alan, child2% 40, child3% 50 kullanmalıdır), özel bir LayoutManager uygulamadan bunu başarmak mümkün müdür?
Temel olarak, tercih edilen boyutlar doğru ayarlandıktan sonra, yüzde olarak hiçbir şey yapmak istemeyebilirsiniz. Basitçe, yüzdeler anlamsız olduğu için (örneğin, pencere boyutunun% 10'unda bir JTextField olması anlamsızdır), çünkü biri pencereyi küçültebilir, böylece JTextField 0 piksel genişliğinde olur veya pencereyi genişletebilir, böylece JTextField bir çoklu ekran kurulumu).
Ancak, yüzdelerinizi gui'nizin daha büyük yapı taşlarının boyutlarını kontrol etmek için kullanabilirsiniz (örneğin paneller).
İki tarafın oranını önceden ayarlayabileceğiniz JSplitPane kullanabilirsiniz. Veya yüzde, piksel ve diğer birimlerde bu tür kısıtlamaları ayarlamanıza izin veren MigLayout'u kullanabilirsiniz.
JEditorPane
Kendisi için bir genişlik önermeyen HTML'li bir. OTOH Bir şeyleri özlediğimden emin değilim. Konudaki cevapları dikkatlice inceleyeceğim, ancak özellikle ikinci durumda herhangi bir yorumunuz varsa ilgilendi.