如何解决JavaFX 缩放 ScrollPane 内容居中
我的目标是让 ScrollPane 里面有一些内容(带有一些控件的 vBox)可缩放,这样当缩放的内容达到可见边界时,ScrollPane 会显示水平和垂直滚动条。但是有一个问题 - 为了做到这一点,我必须将我的内容包装在一个组中,这样做,缩放不是从中心而是从 ScrollPane 的左上角 (0,0),而没有包装Group 的内容从中心进行缩放,但不显示滚动条。这是测试应用程序:
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Slider;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class ZoomScrollExample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Pane root = new Pane();
Scene scene = new Scene(root,450,Color.WHITE);
stage.setScene(scene);
VBox layout = new VBox();
layout.setMinHeight(400);
layout.setMinWidth(400);
Rectangle r = new Rectangle(200,200);
r.setstroke(Color.RED);
r.setFill(Color.WHITE);
layout.getChildren().add(r);
layout.setAlignment(Pos.CENTER);
ScrollPane sp = new ScrollPane();
//comment this to get no scroll bars but scaling is centered
Group g = new Group(layout);
sp.setContent(g);
//uncomment this
//sp.setContent(layout);
sp.setPrefSize(450,450);
Slider s = new Slider();
root.getChildren().add(sp);
root.getChildren().add(s);
s.setMin(100);
s.setMax(200);
// actual scaling
layout.scaleXproperty()
.bind(s.valueproperty().divide(100));
layout.scaleYproperty()
.bind(s.valueproperty().divide(100));
stage.show();
}
}
是否有任何(简单的)方法可以同时使用滚动条和居中缩放?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。