Tôi có một ScrollPane trong cảnh của tôi và muốn thêm một loạt các nút vào đó. Số tiền chính xác phải là động. Tôi đã thử nghiệm khái niệm với các nút Label và có thể thêm thành công nhiều Nhãn như tôi muốn nội dung của ScrollPane (hiện tại là một VBox).JavaFX - Thêm các nút vào ScrollPane với hướng cuộn chính xác
Vấn đề của tôi là tìm hiểu cách cho phép người dùng cuộn bình thường thông qua ScrollPane đầy đủ các nút. Nội dung phù hợp với tốc độ với thanh cuộn; tức là, khi tôi cuộn xuống, nội dung sẽ di chuyển xuống. Tôi cuộn lên, nội dung cuộn lên. Vì vậy, nếu tôi có 10 Nhãn, chỉ năm nhãn hiện đang hiển thị, hành động theo bản năng để xem năm nhãn khác sẽ là cuộn xuống. Thật không may, điều này chỉ di chuyển toàn bộ nội dung xuống, phơi bày không gian trống lên trên và ẩn nhiều nhãn hơn.
tôi có thể gửi một số mẫu mã nếu giúp, nhưng các ý chính của kế hoạch của tôi về cuộc tấn công là thế này:
ScrollPane sp = new ScrollPane();
VBox content = new VBox();
sp.setContent(content);
for (int i = 0; i < 10; i++)
{
Label label = new Label("Label " + i);
content.setPrefHeight(content.getPrefHeight() + label.getPrefHeight());
content.getChildren().add(label);
}
Bởi vì tôi sử dụng một VBox, Nhãn được xếp chồng lên nhau (ở trên trục Y) trên đỉnh một khác, đó là những gì tôi muốn. Khi nhiều Nhãn được thêm vào, thanh cuộn cần phản ánh kích thước tăng của VBox. Tôi đã thử một số phương pháp để làm việc này, bao gồm phương pháp ScrollPane.setVmax()
, điều này là ổn, nhưng tôi vẫn gặp vấn đề về hướng cuộn di chuyển nội dung theo hướng sai. Tôi cũng đã thử một số EventHandler
và EventFilter
để sửa đổi các giá trị tương ứng, vẫn không giải quyết được vấn đề cuộn không di chuyển nội dung theo đúng hướng.
Câu trả lời có vẻ rất đơn giản, nhưng nó vẫn tiếp tục né tránh tôi, ngay cả sau nhiều giờ làm rối tung xung quanh với mã.
CHỈNH SỬA:
đề nghị của jewelsea sử dụng ListView
giải quyết được sự cố của tôi. Tuy nhiên, tôi vẫn tò mò về lý do tại sao sử dụng một số ScrollPane
không được tốt lắm. Ngoài ra, tôi đã chạy vào hành vi kỳ lạ với việc triển khai ListView
: Tôi sử dụng nút để thêm một Label
mới theo cách thủ công vào chế độ xem. Từ bây giờ trở đi, chế độ xem sẽ đóng băng sau khi thêm Label
mới. Nó sẽ khóa trong vài giây trước khi cập nhật vị trí cuộn hoặc hiển thị Label
mới được thêm vào. Tôi không biết nếu điều này là bởi vì có khoảng 20 hoặc hơn Label
trường hợp được quản lý bởi quan điểm hoặc nếu một cái gì đó xảo quyệt hơn là lúc chơi.
Bất kỳ lý do nào không sử dụng 'ListView' để thực hiện điều này? Tôi nghĩ rằng nó có thể chăm sóc những loại vấn đề cho bạn. – jewelsea
@jewelsea, bạn đã giải quyết nó! Tôi luôn ngạc nhiên trước cách phần lớn các vấn đề này có vẻ quá lớn nhưng giải pháp của họ rất đơn giản. Tôi đã có thể sử dụng một 'ListView