2016-08-14 5 views
0

변수 empName을 호출하면 내 응용 프로그램에서 NullPointer 예외가 발생합니다.JavaFX에서 NullPointer 예외가 발생했습니다.

  ResultSet result = stmnt.executeQuery("select FirstName, LastName from emp_info where EmployeeID " 
        + "= '" + empID + "'"); 

//   while(result.next()){ 
//    empName.setText("result.getString(1)); 
//   } 
      empName.setText("asdf"); 
      rootLayout.setCenter(controlData); 

      connection.close(); 
     } 

    } 

내가 텍스트 변수과 같이 초기화 이후는 잘 실행 할 수 있어야한다 : 나는 scenebuilder를 사용할 때

@FXML 
public Text empName; 

는 또한, 때때로 FX 보여줍니다 아이디 empName을하지만 난을 종료 할 때 그것을 다시 열지 마십시오. 나는 그것이 문제가있는 곳이라고 생각한다. 내 xml 파일은 다음과 같습니다

<AnchorPane prefHeight="300.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="studentempsignin.MainPage_Controller"> 
    <children> 
     <BorderPane prefHeight="300.0" prefWidth="500.0"> 
     <center> 
      <Text fx:id="empName" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" BorderPane.alignment="CENTER" /> 
     </center> 
     </BorderPane> 
    </children> 
</AnchorPane> 

내가 얻을 예외입니다 :

SEVERE: null 
java.lang.NullPointerException 
    at studentempsignin.MainPage_Controller.signingIn(MainPage_Controller.java:190) 
    at studentempsignin.SignIn_Controller.lambda$0(SignIn_Controller.java:66) 
    at studentempsignin.SignIn_Controller$$Lambda$143/575703892.handle(Unknown Source) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 

편집 :

방법의 empIDAccess가 나는 로그인의 버튼을 클릭 할 때 호출되는

:

signInBtn.setOnAction((e) -> { 
      try { 
       //used dbaseDriver...idk why 
//    DBaseDriver connect = new DBaseDriver("jdbc:mysql://localhost:3306/AUStudentEmployees", 
//      "kheneahm", "kennygoham"); 
       String empID = empIDField.getText(); 
       MainPage_Controller empIDAccess = new MainPage_Controller(); 
       empIDAccess.signingIn(empID, invalidID, signInBtn); 
      } catch (Exception ex) { 
       Logger.getLogger(SignIn_Controller.class.getName()).log(Level.SEVERE, null, ex); 
      } 

     }); 
+0

여기에는 초기화되지 않은 것이 있습니다. – Danieboy

+0

더 많은 문맥을 보여주십시오. 다른 컨트롤러에서 한 컨트롤러의 메서드를 호출하는 것 같습니다. –

+0

scenebuilder가 종종 id 필드를 표시하지 않는 이유를 알고 있습니까? –

답변

0

새 컨트롤러 인스턴스를 만듭니다. FXMLLoader은 컨트롤러 인스턴스를 만들고 FXML 파일을로드 할 때 그 인스턴스의 @FXML - 주석이있는 필드를 초기화합니다. 이러한 필드는 사용자가 작성한 새 인스턴스에서 초기화되지 않으며 UI에 표시된 것과 동일한 객체를 참조하지도 않습니다.

get a reference to the controller that is created when you load the FXML이 필요합니다.

관련 문제