受け入れられた回答とは異なるように見えます。
1)それらの方法の使用を完全に避けるべきですか?
絶対に避けないでください!これらは、コンポーネントのサイズ制限をレイアウトマネージャーに伝えるためにあります。レイアウトマネージャーを使用していない場合は、これらを使用せずに、視覚的なレイアウトを自分で管理することができます。
残念ながら、Swingには適切なデフォルトの寸法がありません。ただし、コンポーネントのディメンションを設定する代わりに、妥当なデフォルトで独自のコンポーネントを継承する方がOOPの方が適しています。(その場合、子孫クラスでsetXXXを呼び出します。)あるいは、同じ効果を得るためにgetXXXメソッドをオーバーライドできます。
2)メソッドは理由のために定義されています。それで、いつそれらを使うべきですか?どの文脈で?何のために?
常に。コンポーネントを作成するときは、そのコンポーネントの用途に応じて、現実的な最小/推奨/最大サイズを設定します。たとえば、UKなどの国の記号を入力するためのJTextFieldがある場合、その推奨サイズは2文字(現在のフォントなど)に合わせてできるだけ広くなりますが、おそらくそれ以上大きくしても意味がありません。結局のところ、国の記号は2文字です。反対に、たとえば顧客名を入力するためのJTextFieldがある場合、20文字のピクセルサイズのように適切なサイズにすることができますが、レイアウトのサイズを変更すると大きくなる可能性があるため、最大サイズをさらに大きく設定します。同時に、幅が0pxのJTextFieldは無意味なので、現実的な最小サイズを設定します(ピクセルサイズは2文字です)。
3)これらの方法を使用すると、どのような悪影響がありますか?
(私は、異なる画面解像度のシステム間で移植性を追加することしか考えられません)。
悪影響はありません。これらは、レイアウトマネージャのヒントです。
4)LayoutManagerが、すべての望ましいレイアウトのニーズを正確に満たすことができるとは思いません。
レイアウトの小さなバリエーションごとに新しいLayoutManagerを実装する必要がありますか?
いいえ、違います。通常のアプローチは、水平レイアウトや垂直レイアウトなど、さまざまな基本的なレイアウトマネージャーをカスケードすることです。
たとえば、次のレイアウト:
<pre>
+--------------+--------+
| ###JTABLE### | [Add] |
| ...data... |[Remove]|
| ...data... | |
| ...data... | |
+--------------+--------+
</pre>
2つの部分があります。左と右のパーツは水平レイアウトです。右は横置きレイアウトにJPanelを追加したもので、このJPanelはボタンを縦に配置する縦置きレイアウトになっています。
もちろん、これは実際のレイアウトでは注意が必要です。したがって、深刻なものを開発しようとしている場合は、MigLayoutなどのグリッドベースのレイアウトマネージャーがはるかに優れています。
5)4の答えが「はい」の場合、LayoutManagerクラスが急増し、保守が困難になることはありませんか?
いいえ、特別なものが必要でない限り、レイアウトマネージャーを開発することは絶対にしないでください。
6)比率を定義する必要がある状況では...
コンポーネントの子の間(たとえば、child1は10%のスペース、child2 40%、child3 50%を使用する必要があります)、カスタムLayoutManagerを実装せずにそれを達成することは可能ですか?
基本的に、推奨サイズが正しく設定されると、パーセンテージで何も実行したくない場合があります。単純に、パーセンテージは無意味です(たとえば、JTextFieldがウィンドウサイズの10%であっても意味がありません。JTextFieldが0px幅になるようにウィンドウを縮小したり、JTextFieldが2つのディスプレイにまたがるようにウィンドウを拡張したりできるためです。マルチディスプレイ設定)。
しかし、パーセンテージを使用して、GUIのより大きなビルディングブロックのサイズを制御する場合があります(たとえば、パネル)。
JSplitPaneを使用して、2つの辺の比率を事前に設定できます。または、MigLayoutを使用して、そのような制約をパーセンテージ、ピクセル、その他の単位で設定できます。
JEditorPane
それ自体が幅を示唆しないHTMLでの使用。OTOH何か逃したかどうかはわかりません。スレッドでの返信を注意深く確認しますが、特に後者のケースについて、コメントがあるかどうか興味を持っていました。