Исключение в потоке «Поток приложения JavaFX» java.lang.illegalArgumentException: Grid hgap = 10.0 - PullRequest
0 голосов
/ 04 ноября 2019

меня зовут Омар, я сделал этот код в javafx, чтобы переключаться между сценой 0 и сценой 1. Когда вводится номер штрих-кода лазера входного сканера (6590055780)
, он один раз меняется от сцены 0 к сцене 1в сцене 1, если пользователь нажал кнопку, изменится на сцену 0. Но когда я компилирую этот код, он выдает мне следующую ошибку

«Исключение в потоке» Поток приложения JavaFX »java.lang.illegalArgumentException: Gridhgap = 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);
    }



}




...