在JavaFx中使用滑块更新GridPane

在JavaFx中使用滑块更新GridPane,javafx,Javafx,我是新手,我正在创建一个解N x N矩阵的字段,我希望微调器在每次我更改其值时添加更多的文本字段,这样用户就可以选择矩阵的大小,然后进行解算……但是我不知道如何做到这一点 我试图附加一个侦听器JavaFX微调器,但它不起作用,并且在代码中产生了一些错误 有问题的代码 public static void main(String[] args) { // TODO Auto-generated method stub launch(args); } public void star

我是新手,我正在创建一个解N x N矩阵的字段,我希望微调器在每次我更改其值时添加更多的文本字段,这样用户就可以选择矩阵的大小,然后进行解算……但是我不知道如何做到这一点

我试图附加一个侦听器JavaFX微调器,但它不起作用,并且在代码中产生了一些错误

有问题的代码

public static void main(String[] args) {
    // TODO Auto-generated method stub
    launch(args);
}
public void start(Stage primaryStage) throws Exception{
    Double[][] A = new Double[6][6];
    Label tamanoML = new Label("Tamaño Matriz:");
    Spinner tamanoMS =new Spinner(1,5,0,1);
    int tamano=(int) tamanoMS.getValue();
    int r;
    Label[] campoL = new Label[6];  
    TextField campo [][] = new TextField[6][6];

    Button resolverB = new Button("Resolver matrix");
    resolverB.setOnAction((ActionEvent t) -> {
        int n=(int) tamanoMS.getValue();
        int cont=0;
        for(int i=0; i<n; i++) {
            for(int j=0; j<n+1; j++) {
                A[i][j]=Double.parseDouble(campo[i][j].getText());
            }
        }
        for (int a = 0; a < n; a++) {
            Double temp = 0.0;
            temp = A[cont][cont];
            for (int y = 0; y < (n + 1); y++) {
                A[cont][y] = A[cont][y] / temp;
            }

            for (int x = 0; x < n; x++) {
                if (x!=cont) {
                    Double c = A[x][cont];
                    for (int z = 0; z < (n + 1); z++) {
                        A[x][z] = ((-1 * c) * A[cont][z]) + A[x][z];
                    }
                }
            }
            cont++;
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n+1; j++) {
                campo[i][j].setText(""+A[i][j]);
            }
        }
    });
    Button limpiarb = new Button("Limpiar");
    limpiarb.setOnAction((ActionEvent t) -> {
        for(int i=0; i<tamano+1; i++) {
             for(int j=0; j<tamano+1; j++) {
                campo[i][j].setText("0"); 

             }
        }
    }); 

    GridPane mainPane = new GridPane();
    mainPane.setMinSize(650,350); 
    mainPane.setPadding(new Insets(10,10,10,10)); 
    mainPane.setVgap(5); 
    mainPane.setHgap(5);       
    mainPane.setAlignment(Pos.CENTER); 


    mainPane.add(tamanoML, 0, 0); 
    mainPane.add(tamanoMS, 1, 0);
    mainPane.add(resolverB,0,1); 
    mainPane.add(limpiarb,1,1);
    for(int i=0; i<tamano+1; i++) {
        r=i+1;
            if(r<tamano+1) {
                r=i+1;
                campoL[i]=new Label("X"+r);
                mainPane.add(campoL[i],i,2);
            }else {
                campoL[i]=new Label("R");
                mainPane.add(campoL[i],i,2);
            }
    }
    for(int i=0; i<tamano; i++) {
        for(int j=0; j<tamano+1; j++) {
            campo[i][j] = new TextField("0");
            mainPane.add(campo[i][j],j,i+3);
        }
    }
    tamanoMS.valueProperty().addListener((newValue) ->  {
        int s;
        for(int i=0; i<tamano+1; i++) {
            s=i+1;
                if(s<tamano+1) {
                    s=i+1;
                    campoL[i]=new Label("X"+s);
                    mainPane.add(campoL[i],i,2);
                }else {
                    campoL[i]=new Label("R");
                    mainPane.add(campoL[i],i,2);
                }
        }
        for(int i=0; i<tamano; i++) {
            for(int j=0; j<tamano+1; j++) {
                campo[i][j] = new TextField("0");
                mainPane.add(campo[i][j],j,i+3);
            }
        }
        s=0;
    });
    Scene scene = new Scene(mainPane); 

    primaryStage.setScene(scene);

    primaryStage.setTitle("Ventas del Dia");

    primaryStage.show();
}
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
发射(args);
}
public void start(Stage primaryStage)引发异常{
Double[][]A=新的Double[6][6];
标签tamanoML=新标签(“Tamaño Matriz:”);
微调器tamanoMS=新微调器(1,5,0,1);
int tamano=(int)tamanoMS.getValue();
INTR;
标签[]campoL=新标签[6];
TextField campo[][]=新TextField[6][6];
按钮分解器B=新按钮(“分解器矩阵”);
resolverB.setOnAction((ActionEvent t)->{
int n=(int)tamanoMS.getValue();
int cont=0;

对于(inti=0;i好的,那么您要做的第一件事就是像这样重写您的侦听器

tamanoMS.valueProperty().addListener((obs,oldValue,newValue)->{
系统输出打印项次(“听说”);
int-s;

对于(inti=0;i好的,那么您要做的第一件事就是像这样重写您的侦听器

tamanoMS.valueProperty().addListener((obs,oldValue,newValue)->{
系统输出打印项次(“听说”);
int-s;

对于(int i=0;i它导致的确切错误是什么?它导致的确切错误是什么?原因是由于使用了
addListener
的方法签名,基于使用了一个使用1个参数的lambda表达式的事实,也就是说,唯一可能的情况是使用
invalizationListener
作为参数(
newValue
在本例中是一个错误选择的名称,因为参数包含的是
可观察的
,而不是存储在其中的值)。属性值从未被读取(其本身表示逻辑错误)“这一事实告诉”属性它不再需要触发侦听器,因为它已经“告知”侦听器发现发生了一些更改。原因是,由于使用了
addListener
的方法签名,基于这样一个事实,即使用了使用1个参数的lambda表达式,也就是说,唯一可能的是使用
invalizationListener
作为参数的lambda表达式(
newValue
在本例中是一个错误选择的名称,因为参数包含的是
可观察的
,而不是存储在其中的值)。属性值从未被读取(其本身表示逻辑错误)“这一事实告诉”属性它不再需要触发侦听器,因为它已经“告知”听众说发生了一些变化。