Вот мой код. Я намерен позволить пользователю выбрать размер столбца, а затем ввести значение в каждом текстовом поле. И я буду использовать эти значения, чтобы помочь им решить матрицу.
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;
}