Unterschied zwischen setSize() und setPreferredSize() in Java

Der Unterschied zwischen  setSize() und setPreferredSize() ist etwas kompliziert. Manchmal verwenden wir setSize()  und manchmal  setPreferredSize(). Manchmal erfüllt das eine unsere Bedürfnisse und das andere nicht, also was ist das... Der Hauptunterschied zwischen diesen beiden Methoden? Welches sollten wir für JFrame und JPanel verwenden?

Die Antwort ist, wenn Ihre Komponente kein übergeordnetes Element hat, verwenden Sie setSize() der die Größe einer Komponente ändert, andernfalls verwenden Sie   setPreferredSize() und beide Methoden setMinimumSize() und setMaximumSize(). setPreferredSize() die ideale Größe für eine Komponente auswählt, versucht der Layoutmanager, den richtigen Platz für Ihre Komponente anzuordnen.

setSize()  Tut nichts, wenn die übergeordnete Komponente einen Layout-Manager verwendet, den Ort, an dem setSize()  hat eine Wirkung  wäre in Top-Level-Komponenten wie JFrame und JWindow. Sie müssen anrufen: setSize()  Wenn Sie Komponenten innerhalb des übergeordneten Elements ohne Layout-Manager haben.

So,  setPreferredSize()  Sie müssen das Richtige tun, wenn Sie einen Layout-Manager haben, denn die meisten von ihnen arbeiten in  Wiederherstellung der optimalen, minimalen und maximalen Größe ihrer Komponenten. Gebrauchen setSize()  und  setLocation, um diese Komponenten gemäß den Parametern des gewählten Layouts zu positionieren.

Beispiel:

Ein BorderLayout versucht, die Grenzen des nördlichen Bereichs gleich der in   angegebenen Dimension zu setzen setPreferredSize()  seiner nördlichen Region. Es kann größer werden, abhängig von der Größe des JFrame und der Größe des Größe der anderen Komponenten gemäß layout.

Als Schlussfolgerung:
  • setPreferredSize()  berechnet die optimale Position und Dimension der Komponente, wenn Sie ein Layout haben.
  • Wenn Sie kein Layout haben, ist das setSize()  verwendet.