FXML

2015-04-08 14 views
13

लोड करते समय "ऑनएक्शन" को हल करने में त्रुटि मुझे चलाने के लिए एक सरल हैलो वर्ल्ड एप्लिकेशन प्राप्त करने में कुछ समस्याएं आ रही हैं। यह निम्न त्रुटि फेंक है:FXML

Exception in Application start method 
Exception in thread "main" 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$152(LauncherImpl.java:182) 
    at com.sun.javafx.application.LauncherImpl$$Lambda$2/1329552164.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javafx.fxml.LoadException: Error resolving onAction='#printHello', either the event handler is not in the Namespace or there is an error in the script. 
/home/willi/java/IdeaProjects/JavaFXApp/out/production/JavaFXApp/sample/sample.fxml:23 

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) 
    at javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:104) 
    at javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:606) 
    at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:766) 
    at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2827) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2536) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2445) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3218) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3179) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3152) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3128) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3108) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3101) 
    at sample.Main.start(Main.java:13) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$159(LauncherImpl.java:863) 
    at com.sun.javafx.application.LauncherImpl$$Lambda$57/2085742749.run(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$172(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl$$Lambda$52/738441956.run(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$170(PlatformImpl.java:295) 
    at com.sun.javafx.application.PlatformImpl$$Lambda$55/689939224.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(PlatformImpl.java:294) 
    at com.sun.javafx.application.PlatformImpl$$Lambda$53/1382865734.run(Unknown Source) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) 
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139) 
    at com.sun.glass.ui.gtk.GtkApplication$$Lambda$43/704249306.run(Unknown Source) 
    ... 1 more 

मेरे Controller.java फ़ाइल तरीकों printHello और printWorld उन में परिभाषित किया गया है, और मैं जब मैं उनके संबंधित बटनों की प्रेस उन्हें फोन करना चाहते हैं। कोड निम्नानुसार है: पैकेज नमूना;

import javafx.fxml.FXML; 
import javafx.scene.control.Button; 
import java.awt.event.ActionEvent; 

public class Controller { 

    @FXML 
    private Button helloButton; 

    @FXML 
    private Button worldButton; 

    @FXML 
    private void printHello(ActionEvent e){ 
     System.out.println("Hello"); 
    } 

    @FXML 
    private void printWorld(ActionEvent f){ 
     System.out.println("World"); 
    } 
} 

`मेरी fxml फ़ाइल में, मैं दो बटन परिभाषित किया गया है। उनका कोड निम्नानुसार है:

<Button fx:id="helloButton" layoutX="46.0" layoutY="87.0" mnemonicParsing="false" onAction="#printHello" text="Hello" /> 

<Button fx:id="worldButton" layoutX="97.0" layoutY="87.0" mnemonicParsing="false" onAction="#printWorld" text="World" /> 

मेरा कोड इस त्रुटि को क्यों फेंक रहा है?

भयानक प्रारूपण के लिए अग्रिम में क्षमा करें, यह मेरी पहली बार पोस्टिंग है।

+0

करने के लिए वास्तविक कोड आप को चलाने के लिए कोशिश कर रहे हैं पोस्ट करें। – mjuarez

+0

यह काम करना चाहिए। क्या आप सुनिश्चित कर सकते हैं कि आपने fxml में सही नियंत्रक वर्ग का नाम प्रदान किया है? या, नियंत्रक के लिए पैकेज नामों के साथ, यहां पूर्ण fxml पोस्ट करें। – ItachiUchiha

उत्तर

39

आपने नियंत्रक वर्ग में गलत ActionEvent आयात किया है।

import java.awt.event.ActionEvent; 

इसे ठीक करें

import javafx.event.ActionEvent; 
संबंधित मुद्दे