Die Verwendung hängt davon ab, ob das übergeordnete Element der Komponente über einen Layout-Manager verfügt oder nicht.
setSize()
- verwenden, wenn kein übergeordneter Layout-Manager vorhanden ist;
setPreferredSize()
(auch das zugehörige setMinimumSize
und setMaximumSize
) - wird verwendet, wenn ein übergeordneter Layout-Manager vorhanden ist.
Die setSize()
Methode wird wahrscheinlich nichts tun, wenn das übergeordnete Element der Komponente einen Layout-Manager verwendet. Die Stellen, an denen sich dies normalerweise auswirkt , sind Komponenten ( JFrame
s und JWindow
s) der obersten Ebene und Dinge, die sich in gescrollten Fenstern befinden. Sie müssen auch anrufen, setSize()
wenn Sie Komponenten in einem übergeordneten Element ohne Layout-Manager haben.
Im Allgemeinen setPreferredSize()
werden die Komponenten wie erwartet angeordnet, wenn ein Layout-Manager vorhanden ist. Die meisten Layout-Manager ermitteln die bevorzugten (sowie minimalen und maximalen) Größen ihrer Komponenten und verwenden setSize()
und setLocation()
positionieren diese Komponenten dann gemäß den Layoutregeln.
Zum Beispiel BorderLayout
versucht a, die Grenzen seiner "Nord" -Region gleich der bevorzugten Größe seiner Nordkomponente zu machen - sie können je nach Größe der JFrame
, der Größe der anderen Komponenten größer oder kleiner werden im Layout und so weiter.
setSize()
odersetBounds()
kann verwendet werden, wenn kein Layout-Manager verwendet wird.Wenn Sie jedoch einen Layout-Manager verwenden, können Sie dem Layout-Manager mithilfe der
setXXXSize()
Methoden wiesetPreferredSize()
undsetMinimumSize()
usw. Hinweise geben .Stellen Sie außerdem sicher, dass der Container der Komponente einen Layout-Manager verwendet, der die angeforderte Größe berücksichtigt. Das
FlowLayout
,GridBagLayout
undSpringLayout
Manager nutzen die bevorzugte Größe der Komponente (die beiden letzteren auf die Einschränkungen in Abhängigkeit von Ihnen festgelegten), aberBorderLayout
undGridLayout
in der Regel don't.If Sie neue Größenhinweise für eine Komponente angeben , die bereits sichtbar ist, müssen Sie die revalidate Methode aufzurufen auf um sicherzustellen, dass die Containment-Hierarchie erneut festgelegt wird. Rufen Sie dann die Repaint-Methode auf.quelle
setSize
Ändert die Größe der Komponente auf die angegebene Größe.setPreferredSize
legt die bevorzugte Größe fest. Abhängig von der Größe des Containers oder wenn der Benutzer die Komponente manuell neu dimensioniert, hat die Komponente möglicherweise nicht diese Größe.quelle
IIRC ...
setSize
Legt die Größe der Komponente fest.setPreferredSize
legt die bevorzugte Größe fest. Der Layoutmanager versucht, so viel Platz für Ihre Komponente bereitzustellen.Es hängt davon ab, ob Sie einen Layout-Manager verwenden oder nicht ...
quelle