как сделать все ячейки в GridPane видимыми и одинакового размера?

Я написал код ниже, и это результат. Можно ли сделать видимыми все строки и столбцы (ячейки) и сделать их все определенного размера? В результате я хочу иметь какую-то «сеть», чтобы я мог что-то вставить в ячейку и быть уверенным, что размер всей таблицы останется прежним.

GridPane.setVgap() и GridPane.setMinSize() не то, что мне нужно.

введите здесь описание изображения

package sample;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.scene.control.Button;

public class Main extends Application {
    Stage window;

    @Override
    public void start(Stage primaryStage) throws Exception{
        window = primaryStage;
        GridPane grid = new GridPane();

        //buttons
        Button btn = new Button("8,5");
        GridPane.setConstraints(btn, 8,5);
        Button btn2 = new Button("1,3");
        GridPane.setConstraints(btn2, 1,3);

        grid.getChildren().addAll(btn, btn2);

        grid.setGridLinesVisible(true);
        Scene scene = new Scene(grid, 600,400);
        window.setScene(scene);
        window.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

Заранее спасибо!


person Luiz    schedule 13.09.2019    source источник


Ответы (1)


Вы не можете охватывать бесконечную сетку с помощью GridPane. Это просто не то, для чего разработан макет. В любом случае функция gridLinesVisible существует только для целей отладки.

Однако вы можете получить ячейки с одинаковыми размерами, если вы знаете количество строк/столбцов: используйте RowConstraints/ColumnConstraints с percentHeight/Width, чтобы дать каждой строке/столбцу одинаковый размер:

int rowCount = 6;
int columnCount = 9;

RowConstraints rc = new RowConstraints();
rc.setPercentHeight(100d / rowCount);

for (int i = 0; i < rowCount; i++) {
    grid.getRowConstraints().add(rc);
}

ColumnConstraints cc = new ColumnConstraints();
cc.setPercentWidth(100d / columnCount);

for (int i = 0; i < columnCount; i++) {
    grid.getColumnConstraints().add(cc);
}
person fabian    schedule 13.09.2019
comment
Это именно то, что я хотел, спасибо! И если быть точным, я не хотел иметь табличный интерфейс, я должен был предоставить информацию о том, что я знаю количество строк и столбцов. Спасибо! - person Luiz; 13.09.2019