Тот факт, что вы используете JScrollPane
, меняет довольно много вещей, касающихся внутреннего FlowLayout
.действительно, когда FlowLayout пытается макетировать JButtons, он использует для этого доступное пространство.В вашем случае у вас нет ограничений на пространство в «прокручиваемом клиенте» вашей JScrollPane.Как следствие, учитывая, что ваш FlowLayout имеет бесконечное пространство, он использует это пространство для отображения элементов в соответствии с ним.
Таким образом, решение будет состоять в том, чтобы изменить ваш прокручиваемый клиент, чтобы ограничить его видимую область таким же, как вашJViewport
.
от JScrollPane. Однако вы бы даже в этом случае не получили возврат вашей строки, так как FlowLayout не очень хорошо справился с этим случаем.
Если бы ячтобы быть вами, я бы, конечно, выбрал другой макет.Поскольку GridLayout
не очень хорошо обрабатывает границы, я думаю, что единственное разумное стандартное расположение, которое вы можете использовать, это GridBagLayout
, хотя, боюсь, ваши ограничения динамического содержимого могут потребовать от вас чего-то еще более настраиваемого.