wustguangh |分类标签:Java, Swing, 界面设计 2014-11-29

Swing组件的setSize和setPreferredSize两个方法有何区别?

这两个方法都是设置组件的大小,两个方法有什么区别和联系呢?

Ctrl+Enter直接提交

回答(1)

wustguangh 19级 2014-11-29 18:21:33

method 的名稱已清楚的告訴你了.

setPreferedSize() 是 perfered, component "希望" 的 size.

setSize() 是設 component 的 size.


Depend on layout manager, some may use component's size,

some may ignore it and use component's prefered size,

some may partial use/ignore prefered size.


Layout manager 的責任界是依照特定的排版策略來適當設定 container 子元件的位置與"大小"(via setSize method),所以 layout manager 通常不會 honor component's size,當然你要寫出一個只會移動 component 而不會調整 component size(依照各 component 的 size 來決定怎麼擺放 components) 的 layout manager 是可以的。 


人物A:

有一点明白,又有一点不明白 意思是:setPreferedSize and setSize 

sometimes don't determine the component size ,it also depond on which 

layout you use or the component minimumsize and maximumsize.

但是,setPreferedSize and setSize 如果同时出现在软体里时,而且又设不同的Size时,软体是用setPreferedSize 还是setSize 里的size 


人物B:

正常情況下 setSize method determine the component size。而當你使用 layout manager 來排版時,layout manager 會去決定 component size(via setSize method),所以你看到的 component size 不是你在程式中以 setSize 所設定的那般大小(因為在 component 成為 displayable 之後其實還執行過數次的 setSize method,而不只有妳在程式中明白寫出的那一個 setSize invocation)。


setPreferredSize 只是純粹 property 的設定,有些 layout manager 會參考 component 的 preferred size 來排版而把 component size 調整成 preferred one(if appropriate),這並不表示 preferred size determine component size(原則上真的改變 component size 的是 setSize method)。 

相关知识

相关文章更多