2012-05-02 17 views
3

サブフォルダからfxmlをロードしようとしていますが、失敗します。イベントハンドラを含むfxmlファイルをロードするJavaFX 2.0が失敗する

private Parent replaceSceneContent(String fxml) throws Exception { 
     Parent page = (Parent) FXMLLoader.load(App.class.getResource("skinFolder/fxml/"+fxml), null, new JavaFXBuilderFactory()); 
     Scene scene = stage.getScene(); 
     if (scene == null) { 
      scene = new Scene(page, 700, 450); 
      scene.getStylesheets().add(App.class.getResource("skinFolder/css/defaultSkin.css").toExternalForm()); 
      stage.setScene(scene); 
     } else { 
      stage.getScene().setRoot(page); 
     } 
     stage.sizeToScene(); 
     return page; 
    } 

は、私は次の方法でこの機能を使用します:私は交換するシーンの内容を作るラインを持っている

javafx.fxml.LoadException: Method processLogin() does not have the correct signature for an event handler. 
    at javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(Unknown Source) 
    at javafx.fxml.FXMLLoader$ValueElement.processEndElement(Unknown Source) 
    at javafx.fxml.FXMLLoader.processEndElement(Unknown Source) 
    at javafx.fxml.FXMLLoader.load(Unknown Source) 
    at javafx.fxml.FXMLLoader.load(Unknown Source) 
    at Main.App.replaceSceneContent(App.java:115) 
    at Main.App.gotoLogin(App.java:108) 
    at Main.App.start(App.java:72) 
    at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl$3.run(Unknown Source) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source) 
    at com.sun.glass.ui.win.WinApplication$2$1.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:722) 

private void gotoLogin() { 
     try { 
      replaceSceneContent("login.fxml"); 
     } catch (Exception ex) { 
      Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

問題は、私は次のエラーを得たことです

誰も私が修正する必要がある何かのideeaを持っているので、私はこのシーンコンテンツを置き換えることができますか?あなたはこのようにFXMLファイル内Buttonのアクションを定義する場合

おかげ

答えて

6

は:

<Button text="Login" onAction="#processLogin"/> 

あなたは、次のようのようなコントローラクラスのメソッドを定義する必要があります。

@FXML 
    private void processLogin(javafx.event.ActionEvent event) { 
     // Process Login 
    } 
+1

は、私はすでにことを持っていたが、その間、私はunistallingとのJavaFX 2.0を再インストールすることにより、私の問題を解決するために管理:processLoginの署名を注意してください!これらの答えを読んでいる人のためのヒントは上記のアドバイスに従ってください。これがうまくいかない場合は、JavaFX 2.0 SDKをアンインストールして再インストールしてみてください。 –

関連する問題