内部で何が起こっているのかを詳細に理解することで、GUIデザインスキルをより効率的かつ効果的にするために、さまざまなLayoutManagerを適切に使用することに頭を悩ませています。BorderLayoutのソースを調べています。以下の、layoutContainer()メソッドから取得したコードスニペットでは、子コンポーネントのsetSize()メソッドとそれに続くsetBounds()の呼び出しに注意しています。Componentのこれらのメソッドのソースを見ると、setSize()は実際にComponent.xとComponent.yの現在の値を使用してsetBounds()を呼び出します。なぜこれが行われるのですか(完全に冗長ではありません)?setBounds()呼び出しは、setSize()呼び出しの結果を完全に上書きしませんか?
if ((c=getChild(NORTH,ltr)) != null) {
c.setSize(right - left, c.height);
Dimension d = c.getPreferredSize();
c.setBounds(left, top, right - left, d.height);
top += d.height + vgap;
}
ありがとう。