我在JavaFX 8中使用ScrollPane时遇到了一些困难,即无法按需显示滚动条。我目前所做的是创建一个包含x个元素的FlowPane,并将其设置为ScrollPane的内容。
问题出现在与FlowPane方向垂直的方向上缩小时。当元素开始换行并超出边界时,滚动条不会出现。但是在与方向平行的情况下缩小时,这种情况不会发生。我有一个小的Java程序来说明这个问题。 起始 平行缩小 垂直缩小
问题出现在与FlowPane方向垂直的方向上缩小时。当元素开始换行并超出边界时,滚动条不会出现。但是在与方向平行的情况下缩小时,这种情况不会发生。我有一个小的Java程序来说明这个问题。 起始 平行缩小 垂直缩小
![垂直缩小夸张版](https://istack.dev59.com/dSDLD.webp)
![平行缩小夸张版](https://istack.dev59.com/ftqlk.webp)
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
FlowPane flow = new FlowPane();
flow.setStyle("-fx-border-color: red");
addPanes(flow, 16);
ScrollPane scroll = new ScrollPane(flow);
scroll.setStyle("-fx-border-color: green");
scroll.setFitToHeight(true);
scroll.setFitToWidth(true);
Scene scene = new Scene(scroll, 450, 450);
primaryStage.setScene(scene);
primaryStage.show();
}
public void addPanes(FlowPane root, int panes) {
for(int i = 0; i < panes; i++) {
StackPane filler = new StackPane();
filler.setStyle("-fx-border-color: black");
filler.setPrefSize(100, 100);
root.getChildren().add(filler);
}
}
}
Stage
的宽度小于FlowPane
的初始宽度时,它可以正确地工作。在Scene
的宽度上使用400。 - SedJ601