Javafx 将边距添加到滚动窗格的子级

Javafx 将边距添加到滚动窗格的子级,javafx,javafx-8,Javafx,Javafx 8,我创建了这个简单的示例来向您展示我遇到的问题: import javafx.application.Application; import static javafx.application.Application.launch; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Insets; import javafx.geomet

我创建了这个简单的示例来向您展示我遇到的问题:

import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class MainApp extends Application
{

    private final StackPane stackPane = new StackPane();

    @Override
    public void start(Stage stage) throws Exception
    {

        ScrollPane scroll = new ScrollPane();

        stackPane.getChildren().addAll(scroll, comboPane());
        stackPane.setStyle("-fx-background-color: white;");

        stackPane.setAlignment(Pos.TOP_RIGHT);
        stackPane.setPrefSize(900, 900);

        FlowPane flowPane;

        flowPane = new FlowPane(Orientation.HORIZONTAL);
        flowPane.setVgap(10);
        flowPane.setHgap(10);

        flowPane.setPadding(new Insets(15, 15, 15, 15));
        flowPane.setStyle("-fx-background-color: white;");
        flowPane.setAlignment(Pos.TOP_LEFT);

        scroll.setStyle("-fx-background-color: white;");
        scroll.setHbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED);    // Horizontal scroll bar
        scroll.setVbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED);    // Vertical scroll bar
        scroll.setFitToHeight(true);
        scroll.setFitToWidth(true);
        scroll.setContent(flowPane);

        for (int i = 0; i < 20; i++)
        {

            Rectangle rect = new Rectangle(20, 20, 200, 200);

            rect.setArcHeight(15);
            rect.setArcWidth(15);

            rect.setStroke(Color.GREEN);

            flowPane.getChildren().add(rect);

        }

        Scene scene = new Scene(stackPane);

        stage.setTitle("JavaFX and Maven");
        stage.setScene(scene);
        stage.show();
    }

    private ComboBox<String> comboPane()
    {
        ObservableList<String> options = FXCollections.observableArrayList(
            "One", "Two", "Three", "Four");
        ComboBox<String> combo = new ComboBox<>(options);

        return combo;
    }

    public static void main(String[] args)
    {
        launch(args);
    }
}
导入javafx.application.application;
导入静态javafx.application.application.launch;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.geometry.Insets;
导入javafx.geometry.Orientation;
导入javafx.geometry.Pos;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.control.ScrollPane;
导入javafx.scene.layout.FlowPane;
导入javafx.scene.layout.StackPane;
导入javafx.scene.paint.Color;
导入javafx.scene.shape.Rectangle;
导入javafx.stage.stage;
公共类MainApp扩展应用程序
{
私有最终StackPane StackPane=新StackPane();
@凌驾
public void start(Stage)引发异常
{
ScrollPane scroll=新建ScrollPane();
stackPane.getChildren().addAll(滚动,组合窗格());
stackPane.setStyle(“-fx背景色:白色;”);
stackPane.setAlignment(右上角位置);
stackPane.setPrefSize(900900);
流程窗格流程窗格;
flowPane=新的flowPane(方向为水平);
flowPane.setVgap(10);
flowPane.setHgap(10);
设置填充(新的插图(15,15,15,15));
flowPane.setStyle(“-fx背景色:白色;”);
flowPane.setAlignment(位置左上方);
scroll.setStyle(“-fx背景色:白色;”);
scroll.setHbarPolicy(ScrollPane.ScrollBarPolicy.AS_所需);//水平滚动条
scroll.setVbarPolicy(ScrollPane.ScrollBarPolicy.AS_所需);//垂直滚动条
scroll.setFitToHeight(true);
scroll.setFitToWidth(true);
scroll.setContent(流程窗格);
对于(int i=0;i<20;i++)
{
矩形rect=新矩形(20,20,200,200);
直视直视仪(15);
矩形设置弧宽(15);
直接设定行程(颜色为绿色);
flowPane.getChildren().add(rect);
}
场景=新场景(stackPane);
stage.setTitle(“JavaFX和Maven”);
舞台场景;
stage.show();
}
专用组合框组合窗格()
{
ObservableList options=FXCollections.observableArrayList(
“一”、“二”、“三”、“四”);
组合框组合=新组合框(选项);
返回组合;
}
公共静态void main(字符串[]args)
{
发射(args);
}
}

如您所见,ComboBox位于StackPane的一角。我厌倦了添加这个代码组合


在StackPane的corned和Combobox之间添加一些空间的正确方法是什么?

使用静态方法
StackPane

ComboBox<String> cb = comboPane();
stackPane.getChildren().addAll( scroll, cb );
StackPane.setMargin( cb, new Insets( 30 ) );
ComboBox cb=comboPane();
stackPane.getChildren().addAll(滚动,cb);
StackPane.setMargin(cb,新插图(30));

使用堆栈窗格的静态方法

ComboBox<String> cb = comboPane();
stackPane.getChildren().addAll( scroll, cb );
StackPane.setMargin( cb, new Insets( 30 ) );
ComboBox cb=comboPane();
stackPane.getChildren().addAll(滚动,cb);
StackPane.setMargin(cb,新插图(30));