Cho rằng một số lớn AnchorPane
với một số mã con là nội dung của ScrollPane
, làm cách nào tôi có thể cuộn để tạo một trong các mã con nằm ngoài khung nhìn hiện tại, hiển thị?Làm cách nào để cuộn để tạo một Nút trong nội dung của một ScrollPane hiển thị?
7
A
Trả lời
10
Bạn cần phải tìm tọa độ của nút bên trong này bên trong content
và điều chỉnh ScrollPane
's vValue
và hValue
tương ứng.
Xem ensureVisible()
phương pháp trong ứng dụng nhỏ bên cạnh:
public class ScrollPaneEnsureVisible extends Application {
private static final Random random = new Random();
private static void ensureVisible(ScrollPane pane, Node node) {
double width = pane.getContent().getBoundsInLocal().getWidth();
double height = pane.getContent().getBoundsInLocal().getHeight();
double x = node.getBoundsInParent().getMaxX();
double y = node.getBoundsInParent().getMaxY();
// scrolling values range from 0 to 1
pane.setVvalue(y/height);
pane.setHvalue(x/width);
// just for usability
node.requestFocus();
}
@Override
public void start(Stage primaryStage) {
final ScrollPane root = new ScrollPane();
final Pane content = new Pane();
root.setContent(content);
// put 10 buttons at random places with same handler
final EventHandler<ActionEvent> handler = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
int index = random.nextInt(10);
System.out.println("Moving to button " + index);
ensureVisible(root, content.getChildren().get(index));
}
};
for (int i = 0; i < 10; i++) {
Button btn = new Button("next " + i);
btn.setOnAction(handler);
content.getChildren().add(btn);
btn.relocate(2000 * random.nextDouble(), 2000 * random.nextDouble());
}
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
// run once to don't search for a first button manually
handler.handle(null);
}
public static void main(String[] args) { launch(); }
}
9
Tôi tạo ra một phiên bản nhẹ thanh lịch hơn cho trường hợp này. Tuy nhiên, tôi chỉ có thể kiểm tra trên trục y. Hy vọng điều này sẽ giúp
private static void ensureVisible(ScrollPane pane, Node node) {
Bounds viewport = scrollPane.getViewportBounds();
double contentHeight = scrollPane.getContent().localToScene(scrollPane.getContent().getBoundsInLocal()).getHeight();
double nodeMinY = node.localToScene(node.getBoundsInLocal()).getMinY();
double nodeMaxY = node.localToScene(node.getBoundsInLocal()).getMaxY();
double vValueDelta = 0;
double vValueCurrent = scrollPane.getVvalue();
if (nodeMaxY < 0) {
// currently located above (remember, top left is (0,0))
vValueDelta = (nodeMinY - viewport.getHeight())/contentHeight;
} else if (nodeMinY > viewport.getHeight()) {
// currently located below
vValueDelta = (nodeMinY + viewport.getHeight())/contentHeight;
}
scrollPane.setVvalue(vValueCurrent + vValueDelta);
}
Các vấn đề liên quan
- 1. Hiển thị một phần trong nội dung
- 2. Làm cách nào để hiển thị nội dung của mảng này bằng cách sử dụng DataGridView?
- 3. Làm cách nào để hiển thị nội dung của TStringList trong trình gỡ lỗi?
- 4. Hiển thị nội dung bên trong một phần qua = yield
- 5. Làm cách nào để hiển thị hình ảnh này trong phần nội dung email của tôi?
- 6. Làm cách nào để in một nội dung của JPanel?
- 7. Làm cách nào để liên tục cuộn nội dung trong một DIV bằng jQuery?
- 8. nội dung hiển thị django của một manytomanyfield
- 9. PHP: Làm cách nào để hiển thị nội dung của một tệp văn bản trên trang của tôi?
- 10. Làm cách nào để chọn một nút XML dựa trên nội dung của nó?
- 11. libgdx ScrollPane - Không cuộn?
- 12. Bật lên cửa sổ để hiển thị một số nội dung trong một đoạn
- 13. Nội dung khung nội tuyến không hiển thị trong cuộn Trong iO5 iPad/iPhone
- 14. Làm thế nào để chuyển đổi tất cả nội dung trong một scrollview sang một bitmap?
- 15. Làm thế nào để hiển thị NSData với nội dung PDF trong UIWebView của iOS?
- 16. Cách hiển thị nội dung bản đồ?
- 17. Làm cách nào để cuộn một ngGrid để hiển thị lựa chọn hiện tại?
- 18. Java: Làm cách nào để vẽ lớp phủ không cuộn trên Khung nhìn ScrollPane?
- 19. Làm cách nào để hiển thị nội dung trong màn hình JComboBox ở chính giữa?
- 20. Làm thế nào để xóa nội dung của một jTable?
- 21. Làm thế nào để lát nội dung của một CALayer?
- 22. Làm cách nào để căn chỉnh nội dung trong DataTemplate?
- 23. Làm cách nào để khớp nội dung của một phần tử trong XPath (lxml)?
- 24. Cuộn 2 nội dung DIV + nội dung chính bằng thanh cuộn chính của trình duyệt
- 25. Làm cách nào để tạo một bảng HTML nội tuyến
- 26. làm cách nào để hiển thị chuỗi dưới dạng nội dung html ở dạng web
- 27. Làm cách nào để hiển thị nội dung html bằng jinja bằng bình?
- 28. Làm thế nào để hiển thị nội dung HTML trong github README.md?
- 29. JavaFX - Thêm các nút vào ScrollPane với hướng cuộn chính xác
- 30. Làm cách nào để luôn hiển thị thanh cuộn dọc trong trình duyệt?