2016-05-05 7 views
0

Ich erhalte diesen Fehlerder Controller „classname“ hat kein Ereignis Slot „Methodenname“

der Controller „classname“ hat kein Ereignis Slot „Methodenname“

wenn i „/“ vor der Anwendung in fx hinzufügen : controller = "application.MainController"> dieser Fehler geht, sondern schafft Klasse

/Users/myname/Documents/workspace/Javafx%20tesr/bin/application/Main.fxml:7 

hier ist die xML-Datei konnte nicht geladen werden

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.layout.AnchorPane?> 

<AnchorPane prefHeight="450" prefWidth="500"  xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1"  fx:controller="application.MainController"> 
    <children> 
     <Button fx:id="genratebutton" layoutX="160.0" layoutY="225.0"  mnemonicParsing="false" onAction="#generaterandom" prefHeight="27.0"  prefWidth="180.0" text="generate random" /> 
     <Label fx:id="myMessage" layoutX="138.0" layoutY="104.0"  prefHeight="89.0" prefWidth="225.0" /> 
    </children> 
</AnchorPane> 

(leider nur neue GUI kennen Grundlagen der Swing)

diese Hauptklasse ist

package application; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 


public class Main extends Application { 
@Override 
public void start(Stage primaryStage) { 
    try { 
Parent root=FXMLLoader.load(getClass().getClassLoader().getResource("/Main.fxml")); 

    Scene scene = new Scene(root,400,400); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    catch(Exception e) { 
     e.printStackTrace(); 
     System.exit(0); 

    } 
} 

public static void main(String[] args) { 
    launch(args); 
} 
} 

diese eine andere Klasse, deren Methode will ich

package application; 


import java.util.Random; 
import javafx.event.ActionEvent; 

import javafx.fxml.FXML; 
import javafx.scene.control.Label; 


public class MainController { 

@FXML 
private Label myMessage; 
void generaterandom (ActionEvent event){ 
    Random rand=new Random(); 
    int myrand=rand.nextInt(50)+1; 
    myMessage.setText(Integer.toString(myrand)); 
    System.out.println(Integer.toString(myrand)); 


} 

} 

eclipse explorer view

aufzurufen

Antwort

0

Da die Controller-Methode nicht public ist, brauchen Sie es zu kommentieren @FXML:

public class MainController { 

    @FXML 
    private Label myMessage; 

    @FXML 
    void generaterandom (ActionEvent event){ 
     Random rand=new Random(); 
     int myrand=rand.nextInt(50)+1; 
     myMessage.setText(Integer.toString(myrand)); 
     System.out.println(Integer.toString(myrand)); 


    } 

} 
+0

endlich, wunder, es hat funktioniert :) –

Verwandte Themen