2017-10-29 6 views
0

これは私の最初のJavaFXプログラムで、ePass経由でユーザー名とパスワードでユーザー名を受け入れたいと思います。 JFXTextFieldの妥当性検査でエラーが発生しました

Exception in Application start method 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: javafx.fxml.LoadException: 
file:/Users/dylan/NetBeansProjects/JavaFXApplication2/dist/run350595374/JavaFXApplication2.jar!/javafxapplication2/FXMLDocument.fxml 

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) 
    at javafxapplication2.JavaFXApplication2.start(JavaFXApplication2.java:23) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
Caused by: java.lang.NullPointerException 
    at javafxapplication2.FXMLDocumentController.initialize(FXMLDocumentController.java:48) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) 
    ... 14 more 
Exception running application javafxapplication2.JavaFXApplication2 
Java Result: 1 

私はController.javaファイルから eUser.getValidators().add(vali);をコメントアウトし、それに続く行は、その後、エラーが表示されなかっ:私は検証を使用してテキストフィールドが空であるかどうかを確認しようとすると、私はこのエラーを取得します。

これは私のFXMLDocumentController.javaファイルです:

public class FXMLDocumentController implements Initializable { 
@FXML 
private JFXTextField eUser; 
@FXML 
private JFXTextField ePass; 

@FXML 
private void handleClose(MouseEvent event) { 
    System.exit(0); 
} 


@Override 
public void initialize(URL url, ResourceBundle rb) { 
    RequiredFieldValidator vali = new RequiredFieldValidator(); 
    eUser.getValidators().add(vali); 
    vali.setMessage("No Input Given"); 
    vali.focusedProperty().addListener(new ChangeListener<Boolean>(){ 
      public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 
     if(!newValue) 
     { 
      eUser.validate(); 
     } 
    }});}} 

メインクラス:

public class JavaFXApplication2 extends Application { 
    @Override 
    public void start(Stage stage) throws Exception { 
     Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 
     stage.initStyle(StageStyle.UNDECORATED); 
     Scene scene = new Scene(root); 
     stage.setScene(scene); 
     stage.show(); 
    } 
    public static void main(String[] args) { 
     launch(args); 
    } 
} 

答えて

0

多分これが問題になる可能性があります。 FXMLファイルで、それらのIDを関連するテキストフィールドに設定しているかどうかを確認します。おそらくNullPointerExceptionの原因になるかもしれません。 SceneBuilderを使用している場合は、該当するテキストフィールド - >コードをクリックし、それらのtextFieldのfx:idを設定します。

ところで、あなたはおそらく、さらに検査のための代わりのTextFieldのPASSWORDFIELD :)

+0

を使用することができます、あなたは(場合私の答えはあなたの問題を解決しない)だけでなくFXMLファイルに寄与することができますか? –

+0

ありがとうございました。 – Suzume

関連する問題