Việc bạn sử dụng một JScrollPane
thay đổi khá một vài điều liên quan đến nội FlowLayout
. thực sự, khi FlowLayout cố gắng để bố trí chứa JButtons, nó sử dụng cho rằng không gian có sẵn. Trong trường hợp của bạn, bạn không có giới hạn về không gian trong "khách hàng có thể cuộn" của JScrollPane của bạn. Kết quả là, xem xét FlowLayout của bạn có không gian vô hạn, nó sử dụng không gian này để hiển thị các mục theo nó.
Vì vậy, giải pháp sẽ là thay đổi ứng dụng khách có thể cuộn của bạn để giới hạn khu vực có thể xem của nó giống với khu vực JViewport
của JScrollPane.
Tuy nhiên, bạn thậm chí không có trong trường hợp này có dòng trả về của bạn, vì FlowLayout không thực sự xử lý tốt trường hợp này.
Tôi có phải là bạn, tôi dĩ nhiên sẽ chọn bố cục khác. Vì GridLayout
không thực sự xử lý tốt đường viền, tôi nghĩ rằng bố cục chuẩn hợp lý duy nhất bạn có thể sử dụng là GridBagLayout
, althgough tôi sợ những hạn chế về nội dung động của bạn có thể yêu cầu bạn tùy chỉnh nhiều hơn.
Điều này hoàn toàn không có gì để giải quyết vấn đề, đó là về bố cục, không tạo thanh cuộn. OP đã có một thanh cuộn, được cung cấp bởi 'JScrollPanel'. – Nateowami