2016-08-10 5 views
0

JavaFX 암호 필드로 bCrypt를 구현하려고하는데 작동하지 않습니다. 누구든지 내게 포인터를 줄 수 있습니까? 나는 passwordfield.equals .getpassword 등을 사용해 보았지만 여전히 작동하지 않습니다. 그것은 userId 필드에 테스트하는 경우 작동합니다. 이 가시성 public됩니다 않는 한javaFX 암호 필드 사용

private void loginpressed(ActionEvent event) 

{ 

    if (BCrypt.checkpw(passwordfield.getText(), passwordhash)) 
     System.out.println("It matches"); 
    else 

       System.out.print("false");  
} 
@FXML 
TextField userId; 
TextField passwordfield; 
Button loginpressed; 
+0

'userId'는'@ FXML'으로 주석을 달았지만'passwordfield'는 주석이 아닙니다. 이는 가시성이 'public'이 아닌 package private이기 때문에'FXMLLoader'가'userId'를 삽입 할 수는 있지만'passwordfield'는 삽입 할 수 없습니다 ...'NullPointerException'을 얻었습니까? – fabian

+0

아아! 당신은 방금 몇 가지 문제를 해결했습니다! 나는 FXML/FavaFX에 완전히 익숙하지 않으며 초기화 할 모든 줄 앞에 @FXML 태그가 있어야한다는 것을 알지 못했습니까? 대답으로 추가하면 받아 들일 것입니다. 감사. –

답변

1

@FXML 주석하지 컨트롤러 클래스의 모든 멤버는 FXMLLoader에 액세스 할 수 없습니다.

이렇게하면 FXMLLoaderpasswordfield을 컨트롤러에 삽입 할 수 없기 때문에 컨트롤러를 역 참조 할 때 NullPointerException이됩니다.

FXMLLoader에 액세스 할 수있는 모든 구성원은 @FXML으로 별도로 주석을 추가해야합니다.

@FXML 
TextField userId; 
@FXML 
TextField passwordfield; 

을이 경우 주석의 목표는 두 필드이기 때문에 그렇게

@FXML 
TextField userId, 
      passwordfield; 

을 것 :

다음 선언은 작동합니다.