我在ScrollPane中有一个FlowPane。在流 Pane 中,我放置了四个矩形形状。
当我调整(缩小)窗口大小时,滚动 Pane 没有显示滚动条,如下所示:
但是当我进一步减小尺寸时,它就会出现。
下面是我的代码:
public class FlowPaneInsideScrollPane extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
ScrollPane scrollPane = new ScrollPane();
scrollPane.setFitToWidth(true);
scrollPane.setFitToHeight(true);
FlowPane flowPane = new FlowPane();
flowPane.setStyle("-fx-background-color: blue");
flowPane.setPadding(new Insets(10, 10, 10, 10));
flowPane.setHgap(10);
flowPane.setVgap(10);
Rectangle rect1 = new Rectangle(100, 100, Color.RED);
Rectangle rect2 = new Rectangle(100, 100, Color.RED);
Rectangle rect3 = new Rectangle(100, 100, Color.RED);
Rectangle rect4 = new Rectangle(100, 100, Color.RED);
flowPane.getChildren().add(rect1);
flowPane.getChildren().add(rect2);
flowPane.getChildren().add(rect3);
flowPane.getChildren().add(rect4);
scrollPane.setContent(flowPane);
primaryStage.setScene(new Scene(scrollPane, 500, 500));
primaryStage.show();
}
}
i)我应该检查scrollPane的哪个属性以获得显示滚动条的默认值?
ii)如何修改代码以便在所需位置显示滚动条(调整大小时)?
最佳答案
ScrollBar策略由ScrollPane.setHbarPolicy(...)和ScrollPane.setVbarPolicy(...)确定。
我认为这里的问题是您有scrollPane.setFitToWidth(true)
和scrollPane.setFitToHeight(true)
,这导致ScrollPane尝试强制将FlowPane设置为与滚动 Pane 的视口(viewport)相同的大小。尝试注释掉scrollPane.setFitToHeight(true)。如果需要,可以将scrollPane的背景色设置为流 Pane 的相同背景色。
关于javafx - 调整ScrollPane大小时如何使滚动条显示? (在JavaFX中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20951290/