Как я могу выровнять свои объекты И установить расстояние между собой? Программирование на JavaFX и Java - PullRequest
0 голосов
/ 22 марта 2012

Я играл с JavaFX, и мне действительно это нравится. Но я не могу получить свой контент там, где я этого хочу. Даже если я поставлю vbox на ЦЕНТР и метку на ТОПе, они все еще будут в центре и почти соприкасаются друг с другом.

Я хочу иметь (по центру на экране, конечно):

My Title


SubLabel
Button1
Button2
Button3


BottomLabel

Но это выглядит как:

My Title
SubLabel
Button1
Button2
Button3
BottomLabel

Если я перевожу метку vbox или top, он перемещает метку, но также перемещает все остальное вместе с ней.

Как мне заставить его выровняться правильно?

Вот мой псевдокод:

private Node PreMenu()
    {

        Group group2 = new Group();

        BorderPane pane = new BorderPane();

        Text label = new Text("Please Choose a Option");
        label.setFont(Font.font("Kozuka Gothic Pro", 30));
        label.setEffect(addEffect(Color.web("#FF6600"), .85, 20));
        label.setTextAlignment(TextAlignment.CENTER);
        label.setTranslateY(-300); //This moves my label, but it also moves the vbox under it DOWN.

        VBox vbox = new VBox();

        Button option1= new Button("Firstbutton");
        Button option2= new Button("Secondbutton");
        Button option3= new Button("HelpButton");
        option1.setEffect(addEffect(Color.web("#FF6600"), .8, 10));
        option2.setEffect(addEffect(Color.web("#FF6600"), .8, 10));
        option3.setEffect(addEffect(Color.web("#FF6600"), .8, 10));
        option1.setTextAlignment(TextAlignment.CENTER);
        option1.setMinWidth(400);
        option2.setTextAlignment(TextAlignment.CENTER);
        option2.setMinWidth(400);
        option3.setTextAlignment(TextAlignment.CENTER);
        option3.setMinWidth(400);

        vbox.setSpacing(20);
        vbox.getChildren().add(option1);
        vbox.getChildren().add(option2);
        vbox.getChildren().add(option3);

        pane.setTop(label);
        pane.setCenter(vbox);

        group2.getChildren().add(pane);

        return group2;
    }

В моей программе есть другой узел с той же проблемой:

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Самый простой способ с вашим кодом - установить верхний и нижний отступ для вашего Vbox с помощью кнопок:

vbox.setPadding(new Insets(50,0,50,0));

Эта строка добавляет интервал 50 пикселей выше и ниже vbox.

1 голос
/ 22 марта 2012

Не кладите это в группу. Просто верните BorderPane напрямую. Если вы можете опубликовать полностью рабочий пример (с main ()), я посмотрю на него, но я подозреваю, что проблема заключается в группе, которую вы излишне оборачиваете вокруг BorderPane.

Группы имеют специальную функцию в JavaFX, прочтите документацию о различиях между группами и регионами.

...