Как прочитать значение из Gridpane - PullRequest
0 голосов
/ 16 октября 2019

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

public class matrixCalculator extends Application {

private String[]rows = {"2","3","4","5","6"};
private ComboBox<String> rowNumber = new ComboBox<>();

public void start(Stage PrimaryStage) {
    BorderPane bp = new BorderPane(); // The largest pane
    GridPane getSize = new GridPane();// get the # of columns and # of rows
    getSize.add(new Label("Row"),0,0);
    ObservableList<String> getRow = FXCollections.observableArrayList(rows);
    rowNumber.getItems().addAll(getRow);
    rowNumber.setValue("2");
    getSize.add(rowNumber,0,1);
    bp.setTop(getSize);

    // To create a matrix that allows the users to put input in it and then click rref
    GridPane original = new GridPane();
    Button getRRef = new Button("Get RREF");
    final int[] row = {0};
    submit.setOnAction(e -> {
        row[0] = Integer.parseInt(rowNumber.getValue());
        for (int i = 0; i < row[0]; i++) {
                original.add(new TextField(), j, i);
            }
    });
    bp.setCenter(original);

    //Read the input from Textfield and put it into the matrix
    double[][]matrix = new double[Integer.parseInt(rowNumber.getValue())][Integer.parseInt(columnNumber.getValue())];
    double a = Double.parseDouble(((TextField)(getNodeByRowColumnIndex(1,1,original))).getText());

Это вспомогательный метод, который я вижу в StackOverFlow, который помогает мне получить узел в GridPane по индексу

   private Node getNodeByRowColumnIndex (final int row, final int column, GridPane gridPane) {
    Node result = null;
    ObservableList<Node> childrens = gridPane.getChildren();

    for (Node node : childrens) {
        if(GridPane.getRowIndex(node) == row && GridPane.getColumnIndex(node) == column) {
            result = node;
            break;
        }
    }

    return result;
}
...