私は、さまざまなLayoutManagersを適切に使用して、自分のGUI設計スキルをより効率的かつ効果的にするために、フードの下で何が起こっているのかを詳細に理解して頭を上げようとしています。私はBorderLayoutのソースを見ていますが、layoutContainer()メソッドから取得したコードスニペットでは、子コンポーネントのsetSize()メソッドの後にsetBounds()が呼び出されます。これらのComponentメソッドのソースを見ると、setSize()は実際にはsetBounds()をComponent.xとComponent.yの現在の値で呼び出します。なぜこれが行われますか(そして完全に還元されるわけではありません)? setBounds()コールはsetSize()コールの結果を完全に上書きしませんか?Java:setSize()の後にsetBounds()を呼び出すBorderLayoutはなぜですか?
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;
}
ありがとう。
素晴らしい!それは完璧な意味合いがあります。 「通常の」インターフェースの下で何が起こっているのかを完全に理解するには、長い時間がかかります。ありがとう。 – ags