2016-12-15 4 views
2

ich eine JavaFX-Taste haben, ich brauche ein JFrame (Schaukel) auf Klick anrufen, habe ich versucht, diesen Code, aber die Methode erscheint nicht auf JavaFX Szene builderAufruf java swing JFrame von JavaFX Fenster

@FXML 
private Button button; 

public void afficheGraph(String sys) throws Exception{ 

    graph frm = new graph(id);//the swing JFrame 
    frm.setVisible(true); 
} 

ich hatte diesen Fehler

verursacht durch: javafx.fxml.LoadException: Fehler beim Auflösen onAction = ‚# afficheGraph‘, entweder der Event-Handler ist nicht im Namespace, oder es ist ein Fehler im Skript.

+0

Ich sehe keine Größenanpassung. Siehst du das Fenster nicht? – markbernard

+0

Ich habe den Post mit dem Fehler – devhicham

+1

bearbeitet Kannst du den fxml Code hinzufügen? Hast du einen Controller zu deiner Datei.fxml hinzugefügt? –

Antwort

2

Wenn ich mich nicht täusche der Fehler aus dem Verfahren selbst kommt und seine Parameter, denke ich, dass Sie eine Anmerkung hinzufügen müssen @FXML so dass das Verfahren in Zahl genommen wird, und ich sehe den Grund nicht hinzufügen Der String sys Parameter ist nicht der Throwable. Hier ist eine Substitution:

@FXML 
public void afficheGraph(ActionEvent ae){ //ActionEvent instead of String 
graph frm = new graph(id);//the swing JFrame 
frm.setVisible(true); 
} 

Ich kann auf dem throwbale falsch sein, aber ich sehe nicht das Interesse, viel Glück!

+1

Sie benötigen die '@ FXML' Annotation nicht für' public' Methoden (obwohl es imho, viel besser ist, die Methode nicht öffentlich zu machen und mit Anmerkungen zu versehen). Sie benötigen jedoch eine kompatible Liste von Parametern: Sie muss entweder keine Parameter haben oder einen einzelnen Parameter, dem der entsprechende Ereignistyp zugewiesen werden kann (in diesem Fall "ActionEvent", also muss der Parameter "ActionEvent" oder eine Superklasse sein) . –

+0

Danke für Informationen @James_D! –