Не уверены, почему кнопки не будут совмещаться рядом друг с другом в Java FX - PullRequest
0 голосов
/ 04 февраля 2020

Я новичок в java FX. Я создаю базовый c GUI, который должен выглядеть следующим образом: enter image description here

Однако при попытке мое изображение выглядит так:

enter image description here

Я не уверен, почему между двумя кнопками имеется большой зазор. Я использую формат панели сетки. Вот мой код:

public class Main extends Application {
@Override
public void start(Stage stage) {
    //Creating Text field
    TextField textField1 = new TextField();

    //Creating Buttons
    Button submit = new Button("Submit");
    Button cancel = new Button("Cancel");

    //Creating a Grid Pane
    GridPane gridPane = new GridPane();

    //Setting size for the pane
    gridPane.setMinSize(200, 100);

    //Setting the padding
    gridPane.setPadding(new Insets(10, 10, 10, 10));

    //Setting the vertical and horizontal gaps between the columns
    gridPane.setVgap(5);
    gridPane.setHgap(1);

    //Setting the Grid alignment
    gridPane.setAlignment(Pos.CENTER);

    //Arranging all the nodes in the grid
    gridPane.add(textField1, 0, 0);
    gridPane.add(submit, 0, 1);
    gridPane.add(cancel, 1,1);

    //Creating a scene object
    Scene scene = new Scene(gridPane);

    //Setting title to the Stage
    stage.setTitle("Simple Form");

    //Adding scene to the stage
    stage.setScene(scene);

    //Displaying the contents of the stage
    stage.show();
}
public static void main(String args[]){
    launch(args);
}

}

Помощь будет принята: -)

1 Ответ

2 голосов
/ 04 февраля 2020

Что здесь происходит, так это то, что ваш TextField установлен в верхнем левом углу (0,0), но охватывает только один столбец. Вы можете видеть, что кнопка отмены, которая находится в правом нижнем углу (1,1), начинается там, где останавливается TextField (если вы смотрите только на x-позицию).

Существует опция отладки для GridPanes, чтобы вы могли визуализировать больше, что происходит. Просто позвоните

gridPane.setGridLinesVisible(true):

. Решение этой проблемы - установить TextField для получения / span 2 столбца. Вы можете сделать это, позвонив по номеру:

GridPane.setColumnSpan(textField1, 2);

или воспользовавшись другим методом add:

gridPane.add(textField1, 0, 0, 2, 1);

См. https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/GridPane.html для получения дополнительной информации о том, как GridPane работает.

...