2012-03-22 23 views
5

Tôi chỉ cần một bảng để hiển thị 3 hàng có được 3 sản phẩm bán chạy nhất từ ​​DB. Bảng đã sẵn sàng, nhưng có một phần lớn bảng trống rỗng, ngoại trừ 3 hàng. Làm thế nào tôi có thể thiết lập chiều cao của scrollpane này để phù hợp với chiều cao của 3 hàng?Cách đặt JScrollPane để chỉ hiển thị số lượng hàng riêng biệt

SOLUTION:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

Trả lời

8

Đó là một điều không minh bạch thực hiện cuộn của JTable: nó đặt một tùy ý kích thước prefScrollable cố định.

Bạn là null nó để làm cho ScrollPane để quay lại sử dụng preferredSize của bảng:

table.setPreferredScrollableViewportSize (null);

Sửa

outch, @vedran là đúng, điều đó không phải lúc nào làm việc trong một bảng lõi với layoutManagers lõi (đó là một nice hack in another question :) xin lỗi vì sự nhầm lẫn. Sao chép comment của mình ở đây:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

là một lựa chọn khả thi, mặc dù tất cả các bewares thông thường về kích cỡ cứng mã hóa áp dụng ở đây là tốt.

JTable hoạt động tốt sẽ triển khai getPreferredScrollableViewportSize hợp lý hơn, f.i tính toán nó theo nội dung. JXTable (đó là bảng tốt nhất cư xử, thiên vị tôi :-), bạn có thể thiết lập các pref về hàng nhìn thấy được, cũng giống như trong một danh sách:

xtable.setVisualRowCount(3); 
+0

+1, tôi đoán bạn đã nhận nó tốt hơn của tôi một lần nữa :-), nhưng sẽ không thiết lập nó thành null, sẽ xóa toàn bộ 'JTable' khỏi khung nhìn? –

+0

@GagandeepBali no. tên cột vẫn sẽ được hiển thị :) – vedran

+0

+1, xin vui lòng câu hỏi ngu ngốc của tôi, là có sự khác biệt betweens 'XxxViewportSize (table.getPreferredSize)' và của bạn 'XxxViewportSize (null)' trong trường hợp các hàng không có cùng chiều cao – mKorbel

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