2011-01-24 39 views
14

Guys, tôi cần phải đặt một số nút trong một jscrollpanel, nhưng JScrollPane sẽ không tạo ra một cuộn theo chiều dọc. Tôi đang sử dụng một JPanel bên trong JScrollPane đang sử dụng sơ đồ FlowLayout đơn giản. Làm thế nào tôi có thể làm cho JScrollPanel chỉ cuộn theo chiều dọc ??Làm cách nào để buộc JScrollPane chỉ cuộn dọc?

Vấn đề:

enter image description here

mong muốn Giải pháp: enter image description here

Trả lời

1
scrollbar = new Scrollbar(Scrollbar.VERTICAL); 
+0

Đ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

4

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.

4
JTextArea c = new JTextArea(); 
c.setLineWrap(true); 
c.setWrapStyleWord(false); 

này sẽ quấn bất cứ điều gì trong một khu vực văn bản đến dòng kế tiếp mà không cần tạo một Horizontal Scroll.

Các vấn đề liên quan