I am working on a employee management system using java fx and mysql. Basically, when the user click on a row of the tableview, it stock the row data in a employee object, than to String variable. At the same times, an edit scene open. I want the TextField in the new scene to be set up with the previous variable that the row had.
The method displaySelected() is a mouseEvent method, so its in this method that I retrieve row data. Right after retrieving the data, I call switchEdit() method, its only purpose is to open the Edit scene. *Note that retrieving data from row is working just fine, I print it to be sure.
Right after opening the new scene, I use setText method to set the data in the TextField, thats where the error occurs. I get : Cannot invoke "javafx.scene.control.TextField.setText(String)" because "this.idEdit" is null
I doubled check, I got all the necessary @FXML import and I checked previous similar question but it didn't help or maybe I didn't know how to implement it in my own code...
I even tried to setText directly in switchEdit method, but I get the same mistakes, and I think the problem may occur because im using one controller on two scene?
I honestly did my best before asking my question, thanks for your help and Ill take any advice on the way I typed my answer so next time Ill be better at helping you to help me.
Board.java class control the dashboard scene and the edit scene :
public class Board  {
     @FXML
        private TableView<employeeList> employee;
        @FXML
        private TableColumn<employeeList, String> firstColumn;
        @FXML
        private TableColumn<employeeList, String> genderColumn;
        @FXML
        private TableColumn<employeeList, String> idColumn;
        @FXML
        private TableColumn<employeeList, String> lastColumn;
        
        @FXML
        private TableColumn<employeeList, String> yoeColumn;
        
        @FXML
        private Button refresh;
        
        public ObservableList<employeeList> data = FXCollections.observableArrayList();
    
        
        public void refreshTable() {
            //CLEAN TABLEVIEW BEFORE REFRESH
            employee.getItems().clear();
            
            try {
                String query = "select * from employee";
                
                DataBase connectLive = new DataBase();
                Connection connectDb = connectLive.getConnection();
                
                Statement st;
                ResultSet rs;
                
                st = connectDb.createStatement();
                rs = st.executeQuery(query);
                employeeList emp;
                
                while (rs.next()) {
                    emp = new employeeList(rs.getInt("id"), rs.getString("firstname"), rs.getString("lastname"), rs.getString("gender"), rs.getString("yoe"));
                    data.add(emp);
                }
                connectDb.close();
             
            } catch (Exception e) {
                e.printStackTrace();
            }
        
            
            idColumn.setCellValueFactory(new PropertyValueFactory<employeeList, String>("id"));
            firstColumn.setCellValueFactory(new PropertyValueFactory<employeeList, String>("firstname"));
            lastColumn.setCellValueFactory(new PropertyValueFactory<employeeList, String>("lastname"));
            genderColumn.setCellValueFactory(new PropertyValueFactory<employeeList, String>("gender"));
            yoeColumn.setCellValueFactory(new PropertyValueFactory<employeeList, String>("yoe"));
            employee.setItems(data);
        }
        
        
     public void displaySelected(MouseEvent event) throws IOException {
         employeeList emp = employee.getSelectionModel().getSelectedItem();
         if (emp ==null) {
             System.out.println("Ya R");
         }
         else {
             String f = emp.getFirstname(); 
             String l = emp.getLastname();
             String i = String.valueOf(emp.getId());
             String g = emp.getGender();
             String y = emp.getYoe();
             switchEdit();
             
            idEdit.setText(i);
            firstnameEdit.setText(f);
            lastnameEdit.setText(l);
            genderEdit.setText(g);
            yoeEdit.setText(y);
    
             
        //   settEdit(f,l,i,g,y);
             
         }
     }
        //EDIT
        @FXML
        private Button exitEdit;
        
        @FXML
        private Button buttonfinish;
        @FXML
        private TextField firstnameEdit;
        @FXML
        private TextField genderEdit;
        @FXML
        private TextField idEdit;
        @FXML
        private TextField lastnameEdit;
        @FXML
        private TextField yoeEdit;
        
        @FXML
        private AnchorPane paneEdit;
        
        public void exitEdit(ActionEvent e)  {
            Stage stage;
            stage = (Stage) paneEdit.getScene().getWindow();
            stage.close();
        }
        
        public void exit()  {
            Stage stage;
            stage = (Stage) paneEdit.getScene().getWindow();
            stage.close();
        }
        
        public void switchEdit() throws IOException  {
            Parent root = FXMLLoader.load(getClass().getResource("/application/Edit.fxml"));
            Scene scene = new Scene(root);
            scene.setFill(Color.TRANSPARENT);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            
            Stage primaryStage = new Stage();
            
            primaryStage.initStyle(StageStyle.TRANSPARENT);
            primaryStage.setScene(scene);
            primaryStage.show();
        }
        
        public void switchE(ActionEvent e) throws IOException {
            switchEdit();
        }
}
fxml code for the board:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.effect.DropShadow?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.paint.Color?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Board">
   <children>
      <AnchorPane fx:id="pane2" prefHeight="860.0" prefWidth="920.0" style="-fx-background-color: #1B2430;">
         <children>
            <VBox layoutX="60.0" layoutY="25.0" prefHeight="797.0" prefWidth="777.0" style="-fx-background-color: #EEEEEE; -fx-background-radius: 30;">
               <children>
                  <AnchorPane prefHeight="28.0" prefWidth="777.0">
                     <children>
                        <Button fx:id="exitButton" layoutX="734.0" layoutY="20.0" mnemonicParsing="false" onAction="#exit" prefHeight="20.0" prefWidth="20.0" style="-fx-background-radius: 100; -fx-background-color: #7b3733;" text="X" textFill="#eeeeee">
                           <effect>
                              <DropShadow offsetY="5.0">
                                 <color>
                                    <Color opacity="0.5" />
                                 </color>
                              </DropShadow>
                           </effect>
                           <font>
                              <Font name="Consolas" size="12.0" />
                           </font>
                        </Button>
                     </children>
                  </AnchorPane>
                  <HBox alignment="CENTER" prefHeight="119.0" prefWidth="737.0" style="-fx-background-color: #336e7b; -fx-background-radius: 30;">
                     <children>
                        <Label alignment="CENTER" contentDisplay="CENTER" text="Dash Board" textFill="WHITE">
                           <font>
                              <Font name="Calibri Light" size="24.0" />
                           </font>
                           <HBox.margin>
                              <Insets right="30.0" />
                           </HBox.margin>
                        </Label>
                     </children>
                     <VBox.margin>
                        <Insets left="20.0" right="20.0" top="20.0" />
                     </VBox.margin>
                  </HBox>
                  <HBox prefHeight="42.0" prefWidth="581.0">
                     <children>
                        <BorderPane prefHeight="200.0" prefWidth="200.0" />
                        <BorderPane prefHeight="38.0" prefWidth="1026.0">
                           <right>
                              <TextField prefHeight="25.0" prefWidth="219.0" promptText=" Search keywords" style="-fx-background-radius: 30; -fx-background-color: #D3D3D3;" BorderPane.alignment="CENTER">
                                 <BorderPane.margin>
                                    <Insets right="20.0" />
                                 </BorderPane.margin>
                                 <effect>
                                    <DropShadow offsetY="5.0">
                                       <color>
                                          <Color opacity="0.30000001192092896" />
                                       </color>
                                    </DropShadow>
                                 </effect>
                              </TextField>
                           </right>
                           <left>
                              <Button fx:id="refresh" mnemonicParsing="false" onAction="#refreshTable" prefHeight="25.0" prefWidth="82.0" style="-fx-background-radius: 30; -fx-background-color: #D3D3D3;" text="" textFill="WHITE" textOverrun="CLIP" BorderPane.alignment="CENTER">
                                 <BorderPane.margin>
                                    <Insets bottom="2.0" left="20.0" />
                                 </BorderPane.margin>
                                 <effect>
                                    <DropShadow offsetY="5.0">
                                       <color>
                                          <Color opacity="0.30000001192092896" />
                                       </color>
                                    </DropShadow>
                                 </effect>
                              </Button>
                           </left>
                        </BorderPane>
                     </children>
                  </HBox>
                  <BorderPane prefHeight="364.0" prefWidth="777.0">
                     <center>
                        <TableView fx:id="employee" onMouseClicked="#displaySelected" prefHeight="345.0" prefWidth="737.0" BorderPane.alignment="CENTER">
                           <columns>
                              <TableColumn fx:id="idColumn" prefWidth="84.0" text="ID" />
                              <TableColumn fx:id="firstColumn" prefWidth="163.0" text="First Name" />
                              <TableColumn fx:id="lastColumn" prefWidth="163.0" text="Last Name" />
                              <TableColumn fx:id="genderColumn" prefWidth="163.0" text="Gender" />
                              <TableColumn fx:id="yoeColumn" prefWidth="163.0" text="Year Of Experience" />
                           </columns>
                           <BorderPane.margin>
                              <Insets left="20.0" right="20.0" />
                           </BorderPane.margin>
                        </TableView>
                     </center>
                  </BorderPane>
                  <BorderPane prefHeight="60.0" prefWidth="777.0">
                     <left>
                        <Button fx:id="addButton" mnemonicParsing="false" onAction="#addButton" prefHeight="25.0" prefWidth="200.0" style="-fx-background-color: #336e7b; -fx-background-radius: 30;" text="Add" textFill="WHITE" BorderPane.alignment="CENTER">
                           <BorderPane.margin>
                              <Insets left="20.0" right="20.0" />
                           </BorderPane.margin>
                           <font>
                              <Font name="Calibri" size="18.0" />
                           </font>
                           <effect>
                              <DropShadow offsetY="5.0">
                                 <color>
                                    <Color opacity="0.5" />
                                 </color></DropShadow>
                           </effect>
                        </Button>
                     </left>
                     <right>
                        <Button fx:id="deleteButton" mnemonicParsing="false" onAction="#switchD" prefWidth="200.0" style="-fx-background-color: #7b3733; -fx-background-radius: 30;" text="Delete" textFill="WHITE" BorderPane.alignment="CENTER">
                           <BorderPane.margin>
                              <Insets left="20.0" right="20.0" />
                           </BorderPane.margin>
                           <font>
                              <Font name="Calibri" size="18.0" />
                           </font>
                           <effect>
                              <DropShadow offsetY="5.0">
                                 <color>
                                    <Color opacity="0.5" />
                                 </color></DropShadow>
                           </effect>
                        </Button>
                     </right>
                     <center>
                        <Button fx:id="EditButton" mnemonicParsing="false" onAction="#switchE" prefHeight="25.0" prefWidth="200.0" style="-fx-background-color: #808080; -fx-background-radius: 30;" text="Edit" textFill="WHITE" BorderPane.alignment="CENTER">
                           <font>
                              <Font name="Calibri" size="18.0" />
                           </font>
                           <effect>
                              <DropShadow offsetY="5.0">
                                 <color>
                                    <Color opacity="0.5" />
                                 </color></DropShadow>
                           </effect>
                        </Button>
                     </center>
                  </BorderPane>
                  <BorderPane prefHeight="57.0" prefWidth="777.0">
                     <VBox.margin>
                        <Insets top="90.0" />
                     </VBox.margin>
                     <center>
                        <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Copyright © 2022 - Amine Lakhal - Raphael Ducros" BorderPane.alignment="CENTER" />
                     </center>
                  </BorderPane>
               </children>
            </VBox>
         </children>
      </AnchorPane>
   </children>
</AnchorPane>
fxml code for the edit page
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.effect.DropShadow?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.paint.Color?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane fx:id="paneEdit" prefHeight="775.0" prefWidth="493.0" style="-fx-background-color: #1B2430;" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Board">
   <children>
      <VBox layoutX="65.0" layoutY="30.0" prefHeight="715.0" prefWidth="364.0" style="-fx-background-color: #EEEEEE; -fx-background-radius: 30;">
         <children>
            <Button fx:id="exitEdit" mnemonicParsing="false" onAction="#exitEdit" prefHeight="20.0" prefWidth="20.0" style="-fx-background-radius: 100; -fx-background-color: #7b3733;" text="X" textFill="#eeeeee">
               <effect>
                  <DropShadow offsetY="5.0">
                     <color>
                        <Color opacity="0.5" />
                     </color>
                  </DropShadow>
               </effect>
               <font>
                  <Font name="Consolas" size="12.0" />
               </font>
               <VBox.margin>
                  <Insets left="328.0" top="13.0" />
               </VBox.margin>
            </Button>
            <HBox alignment="CENTER" prefHeight="100.0" prefWidth="359.0" style="-fx-background-color: #336e7b; -fx-background-radius: 30;">
               <children>
                  <ImageView>
                     <image>
                        <Image url="@edit.png" />
                     </image>
                  </ImageView>
                  <Label alignment="CENTER" contentDisplay="CENTER" text="     Edit Employee" textFill="WHITE">
                     <font>
                        <Font name="Calibri Light" size="24.0" />
                     </font>
                     <HBox.margin>
                        <Insets right="30.0" />
                     </HBox.margin>
                  </Label>
               </children>
               <VBox.margin>
                  <Insets left="20.0" right="20.0" top="20.0" />
               </VBox.margin>
            </HBox>
            <Label prefHeight="35.0" prefWidth="314.0" text="ID Employe *" textFill="#8a959a">
               <font>
                  <Font name="Calibri Italic" size="14.0" />
               </font>
               <VBox.margin>
                  <Insets left="20.0" right="20.0" />
               </VBox.margin>
            </Label>
            <TextField fx:id="idEdit" prefHeight="35.0" style="-fx-background-radius: 30; -fx-background-color: #D3D3D3;">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" />
               </VBox.margin>
               <font>
                  <Font name="Consolas" size="12.0" />
               </font>
               <effect>
                  <DropShadow offsetY="5.0">
                     <color>
                        <Color opacity="0.30000001192092896" />
                     </color>
                  </DropShadow>
               </effect>
            </TextField>
            <Label prefHeight="35.0" prefWidth="314.0" text="Last Name" textFill="#8a959a">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" top="10.0" />
               </VBox.margin>
               <font>
                  <Font name="Calibri Italic" size="14.0" />
               </font>
            </Label>
            <TextField fx:id="lastnameEdit" prefHeight="35.0" style="-fx-background-radius: 30; -fx-background-color: #D3D3D3;">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" />
               </VBox.margin>
               <effect>
                  <DropShadow offsetY="5.0">
                     <color>
                        <Color opacity="0.30000001192092896" />
                     </color>
                  </DropShadow>
               </effect>
            </TextField>
            <Label prefHeight="35.0" prefWidth="473.0" text="First Name" textFill="#8a959a">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" top="15.0" />
               </VBox.margin>
               <font>
                  <Font name="Calibri Italic" size="14.0" />
               </font>
            </Label>
            <TextField fx:id="firstnameEdit" prefHeight="35.0" style="-fx-background-radius: 30; -fx-background-color: #D3D3D3;">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" />
               </VBox.margin>
               <effect>
                  <DropShadow offsetY="5.0">
                     <color>
                        <Color opacity="0.30000001192092896" />
                     </color>
                  </DropShadow>
               </effect>
            </TextField>
            <Label prefHeight="35.0" prefWidth="311.0" text="Gender " textFill="#8a959a">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" top="15.0" />
               </VBox.margin>
               <font>
                  <Font name="Calibri Italic" size="14.0" />
               </font>
            </Label>
            <TextField fx:id="genderEdit" prefHeight="35.0" style="-fx-background-radius: 30; -fx-background-color: #D3D3D3;">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" />
               </VBox.margin>
               <effect>
                  <DropShadow offsetY="5.0">
                     <color>
                        <Color opacity="0.30000001192092896" />
                     </color>
                  </DropShadow>
               </effect>
            </TextField>
            <Label prefHeight="35.0" prefWidth="318.0" text="Year Of Experience" textFill="#8a959a">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" top="15.0" />
               </VBox.margin>
               <font>
                  <Font name="Calibri Italic" size="14.0" />
               </font>
            </Label>
            <TextField fx:id="yoeEdit" prefHeight="35.0" style="-fx-background-radius: 30; -fx-background-color: #D3D3D3;">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" />
               </VBox.margin>
               <effect>
                  <DropShadow offsetY="5.0">
                     <color>
                        <Color opacity="0.30000001192092896" />
                     </color>
                  </DropShadow>
               </effect>
            </TextField>
            <Label prefHeight="15.0" prefWidth="310.0" text=" Information can be modified later" textFill="#8a959a">
               <VBox.margin>
                  <Insets left="20.0" top="5.0" />
               </VBox.margin>
               <font>
                  <Font name="Calibri" size="11.0" />
               </font>
            </Label>
            <HBox prefHeight="35.0" prefWidth="200.0">
               <children>
                  <CheckBox mnemonicParsing="false" text="All data have been confirmed by manager" textFill="#8a959a">
                     <HBox.margin>
                        <Insets left="20.0" top="5.0" />
                     </HBox.margin>
                     <font>
                        <Font name="Calibri Italic" size="14.0" />
                     </font>
                  </CheckBox>
               </children>
            </HBox>
            <Button fx:id="buttonfinish" mnemonicParsing="false" prefHeight="47.0" prefWidth="359.0" style="-fx-background-radius: 30; -fx-background-color: #336e7b;" stylesheets="@application.css" text="Finish" textFill="WHITE">
               <VBox.margin>
                  <Insets left="20.0" right="20.0" />
               </VBox.margin>
               <font>
                  <Font name="Calibri Light" size="18.0" />
               </font>
               <effect>
                  <DropShadow offsetY="5.0">
                     <color>
                        <Color opacity="0.5" />
                     </color>
                  </DropShadow>
               </effect>
            </Button>
            <Text fill="#8a959a" strokeType="OUTSIDE" strokeWidth="0.0" text="All sensitive data are subject to confidentiality rules in force in the province of Quebec. Any illegal use will be punished by law.        23:788:22|667" wrappingWidth="297.13671875">
               <VBox.margin>
                  <Insets bottom="20.0" left="20.0" right="20.0" top="10.0" />
               </VBox.margin>
               <font>
                  <Font name="Calibri" size="11.0" />
               </font>
            </Text>
         </children>
      </VBox>
   </children>
</AnchorPane>
 
     
    