我想调整 ScrollPane 的大小以适合父组件。我测试了这段代码:
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
BorderPane bp = new BorderPane();
bp.setPrefSize(600, 600);
bp.setMaxSize(600, 600);
bp.setStyle("-fx-background-color: #2f4f4f;");
VBox vb = new VBox(bp);
ScrollPane scrollPane = new ScrollPane(vb);
scrollPane.setFitToHeight(true);
scrollPane.setFitToWidth(true);
scrollPane.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
scrollPane.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
Scene scene = new Scene(scrollPane);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
但是正如你所看到的,我没有看到树形滚动条。我的代码有什么问题吗?
最佳答案
滚动条不会显示,因为
- 您已将策略设置为
ScrollBarPolicy.AS_NEEDED
- 滚动条的宽度和高度会自动调整为其容器的宽度和高度,在本例中,容器是可调整大小的 Vbox。
要解决此问题,您可以删除 setFitToHeight
和 setFitToWidth
并将它们保留为 false。
请注意,ScrollBarPolicy
也可以设置为 ALWAYS
,而不是 AS_NEEDED
,即使窗口展开,这也会保留滚动条.
Refer here for more information using ScrollPane
ScrollPane API: setFitToHeight
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
BorderPane bp = new BorderPane();
bp.setPrefSize(600, 600);
bp.setMaxSize(600, 600);
bp.setStyle("-fx-background-color: #2f4f4f;");
VBox vb = new VBox(bp);
ScrollPane scrollPane = new ScrollPane(vb);
//scrollPane.setFitToHeight(true);
//scrollPane.setFitToWidth(true);
scrollPane.setHbarPolicy(ScrollBarPolicy.ALWAYS);
scrollPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);
Scene scene = new Scene(scrollPane);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
关于javafx - 自动调整滚动 Pane 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037196/