El hecho de utilizar un JScrollPane
cambios bastante algunas cosas relativas a la FlowLayout
interna. de hecho, cuando FlowLayout intenta el diseño que contiene JButtons, usa para eso el espacio disponible. En su caso, no tiene límites para el espacio en el "cliente desplazable" de su JScrollPane. Como consecuencia, teniendo en cuenta que su FlowLayout tiene espacio infinito, utiliza este espacio para mostrar elementos de acuerdo con él.
Así que la solución sería cambiar su cliente desplazable para limitar su área visible al mismo que el JViewport
de su JScrollPane.
Sin embargo, incluso en este caso no tendría sus retornos de línea, ya que FlowLayout no maneja bien este caso.
Si yo fuera usted, por supuesto, elegiría otro diseño. Como GridLayout
realmente no maneja bien las fronteras, creo que el único diseño estándar razonable que puede usar es GridBagLayout
, aunque me temo que sus restricciones de contenido dinámico pueden requerir algo aún más personalizable.
Esto no hace absolutamente nada para resolver el problema, que es sobre el diseño, no la creación de una barra de desplazamiento. El OP ya tiene una barra de desplazamiento, proporcionada por 'JScrollPanel'. – Nateowami