问题描述
我的目标是让 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 (将#修改为@)