“线程中的异常”;JavaFX应用程序线程;java.lang.illegalArgumentException:Grid hgap=10.0

“线程中的异常”;JavaFX应用程序线程;java.lang.illegalArgumentException:Grid hgap=10.0,javafx,barcode-scanner,scene,Javafx,Barcode Scanner,Scene,我的名字是Omar,我用javafx编写了这段代码,以便在场景0和场景1之间切换。 当输入扫描仪激光条形码编号时(6590055780) 一旦进入场景1,它将从场景0更改为场景1,如果用户按下按钮,它将更改为场景0。 但是当我编译这段代码时,它给出了以下错误 线程“JavaFX应用程序线程”java.lang.illegalArgumentException:Grid hgap=10.0 alignment=center中的异常已设置为另一个场景的根 我不知道为什么会出现此错误,就像按下setO

我的名字是Omar,我用javafx编写了这段代码,以便在场景0和场景1之间切换。 当输入扫描仪激光条形码编号时(6590055780)
一旦进入场景1,它将从场景0更改为场景1,如果用户按下按钮,它将更改为场景0。 但是当我编译这段代码时,它给出了以下错误

线程“JavaFX应用程序线程”java.lang.illegalArgumentException:Grid hgap=10.0 alignment=center中的异常已设置为另一个场景的根

我不知道为什么会出现此错误,就像按下setOnKeyPressed不允许我离开一样,当我想从场景0切换到场景1时,我收到了此错误消息,非常感谢为解决此问题提供的任何帮助。多谢各位

这就是代码

import javafx.application.Application;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.event.EventHandler;
import javafx.scene.control.TextArea;

import javafx.scene.input.KeyEvent;

public class scannerinputfx2 extends Application {
////////////* public class*///////

public static  String salida;


@Override
public void start(Stage primaryStage){
primaryStage.setTitle("what's up");



//scene 0
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));

Scene scene = new Scene(grid, 300, 275);
TextArea area = new TextArea();
TextField userTextField = new TextField();
//grid.add(userTextField, 0, 0);
//grid.add(area, 0,1);
GridPane.setConstraints(userTextField, 0,0);
GridPane.setConstraints(area,0,1);
grid.getChildren().addAll(area, userTextField);

//scene 1
GridPane grid1 = new GridPane();
grid1.setAlignment(Pos.CENTER);
grid1.setHgap(10);
grid1.setVgap(10);
grid1.setPadding(new Insets(25, 25, 25, 25));
Scene scene1 = new Scene(grid1, 300, 275);
Button btnfinal = new Button("Press button to get back");
GridPane.setConstraints(btnfinal, 0, 0);
grid1.getChildren().addAll(btnfinal);


btnfinal.setOnAction(actionEvent -> {   
scene1.setRoot(grid);
});

primaryStage.setScene(scene);

        primaryStage.show();


 userTextField.setOnKeyPressed(new EventHandler<KeyEvent>() {
            public void handle(KeyEvent ke) {


                 area.setText( userTextField.getText());


if (userTextField.getText().equals("6590055780"))
            {
      System.out.println("The number is " + userTextField.getText());

           userTextField.setText("");
           scene.setRoot(grid1);
             }
           else 
             {
      System.out.println("The number is not the indicated");
            }

            }


        });


}








////////*Here finish primary stage/////////
 public static void main(String[] args) {
        launch(args);
    }



}




导入javafx.application.application;
导入javafx.scene.control.TextField;
导入javafx.scene.layout.GridPane;
导入javafx.geometry.Insets;
导入javafx.geometry.Pos;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.stage.stage;
导入javafx.event.EventHandler;
导入javafx.scene.control.TextArea;
导入javafx.scene.input.KeyEvent;
公共类scannerinputfx2扩展应用程序{
////////////*公共课*///////
公共静态字符串salida;
@凌驾
公共无效开始(阶段primaryStage){
primaryStage.setTitle(“怎么了”);
//场景0
GridPane grid=新建GridPane();
网格设置对齐(位置中心);
网格。setHgap(10);
网格设置间隙(10);
网格设置填充(新插图(25,25,25,25));
场景=新场景(网格,300275);
TextArea=新建TextArea();
TextField userTextField=新建TextField();
//add(userTextField,0,0);
//网格。添加(面积,0,1);
setConstraints(userTextField,0,0);
设置约束(面积,0,1);
grid.getChildren().addAll(区域,userTextField);
//第一场
GridPane grid1=新的GridPane();
网格1.设置对齐(位置中心);
grid1.setHgap(10);
grid1.setVgap(10);
网格1.设置填充(新插图(25,25,25,25));
场景scene1=新场景(grid1300275);
按钮btnfinal=新按钮(“按下按钮返回”);
setConstraints(btnfinal,0,0);
grid1.getChildren().addAll(btnfinal);
btnfinal.setOnAction(actionEvent->{
场景1.设置根(网格);
});
初级阶段。场景(场景);
primaryStage.show();
userTextField.setOnKeyPressed(新的EventHandler(){
公共无效句柄(KeyEvent ke){
setText(userTextField.getText());
if(userTextField.getText().equals(“6590055780”))
{
System.out.println(“数字是”+userTextField.getText());
userTextField.setText(“”);
scene.setRoot(grid1);
}
其他的
{
System.out.println(“数字不是指定的”);
}
}
});
}
////////*在这里完成初级阶段/////////
公共静态void main(字符串[]args){
发射(args);
}
}

为什么要尝试修改场景而不是替换
阶段中的场景
?我正在使用scene.setRoot(grid1)设置根场景;为了在场景之间切换,但似乎需要一种键盘监听器来获取激光条形码的输入