1
我試圖通過正確使用不同的LayoutManagers來讓我的GUI設計技能更加高效和有效,通過深入瞭解引擎蓋下發生的事情。我正在查看BorderLayout的源代碼,並在下面的代碼片段中從layoutContainer()方法中獲取,我注意到對子組件的setSize()方法以及setBounds()方法的調用。查看Component的這些方法的源代碼,setSize()實際上使用Component.x和Component.y的當前值調用setBounds()。爲什麼這樣做(而不是完全減少)? setBounds()調用不會完全覆蓋setSize()調用的結果嗎?Java:爲什麼BorderLayout調用setSize()後跟setBounds()?
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 2012-04-14 21:17:55