2016-08-10 25 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'はアノテートされていません。これは 'FXMLLoader'が' userId'を注入することを許可しますが、 'passwordfield'は注入しません。なぜなら、可視性は' public'ではなくprivateであるからです。 'NullPointerException'を取得しますか? – fabian

+0

AHHA!あなたは私のいくつかの問題をちょうど解決しました!私はFXML/FavaFXに全く新しいですし、私は初期化したいすべての行の前に@FXMLタグを持つ必要があることを知りませんでしたか?答えとして追加し、私は受け入れます。ありがとう。 –

答えて

1

@FXMLで注釈を付けていないコントローラクラスの任意のメンバーは、FXMLLoaderにアクセスすることはできません。

この結果、FXMLLoaderはコントローラにpasswordfieldを注入できなくなり、逆参照するとNullPointerExceptionになります。

FXMLLoaderにアクセスできるすべてのメンバーは、別々に@FXMLと注釈を付ける必要があります。

次の宣言は、動作するはず:

@FXML 
TextField userId; 
@FXML 
TextField passwordfield; 

とそうなる

@FXML 
TextField userId, 
      passwordfield; 

この場合、アノテーションのターゲットが両方のフィールドであるからです。

関連する問題