2016-03-23 7 views
0

Ich habe eine einfache Fxml Anwendung in JavaFX erstellt. Ich habe eine Schaltfläche mit Szene-Builder und eine Aktion namens btnExit: komplette FXML Datei (ganz einfach und frisch erzeugte)JavaFX Intellij onAction sieht aus wie es nicht in Controller

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

<?import javafx.scene.control.Button?> 
<?import javafx.scene.layout.GridPane?> 
<GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.65" fx:controller="sample.Controller"> 
    <children> 
     <Button mnemonicParsing="false" text="Button" onAction="#btnExit"/> 
    </children> 
</GridPane> 

Als ich die Aktion in meinem Controller erstellen IntelliJ mir sagt, dass es nie verwendet wird.

Look at the Controller displayed in my Intellij

Dies ist die komplette Code der Controller-Klasse:

package sample; 

import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 

public class Controller 
{ 
    @FXML 
    public void btnExit(ActionEvent actionEvent) 
    { 
     System.exit(0); 
    } 
} 

In der FXML Datei ich die Warnung erhalten, dass eine Klasse oder Schnittstelle zu erwarten ist. (#btnExit).

in the fxml file it is underlined in red color

Wenn ich das Programm alles funktioniert laufen, aber es ärgert, dass es sieht aus wie etwas nicht stimmt. Wie komme ich an der IntelliJ-Warnung vorbei?

Dies passiert in allen meinen Projekten, also habe ich versucht, eine komplette neue mit IntelliJ über "Datei"> "neues Projekt"> "JavaFX-Anwendung" zu erstellen. Ich denke, es ist etwas falsch mit meinen Einstellungen oder jdk, aber ich weiß nicht, was es sein könnte.

ps: ich bin neu zu Java und JavaFX

ich intellij 2016 aktualisiert und neu installiert es bereits:

IntelliJ IDEA 2016.1 
Build #IC-145.258, built on March 17, 2016 
JRE: 1.8.0_71-b15 amd64 
JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation 
+0

Können Sie bitte ein bisschen mehr Details geben? Wie die Deklaration der Controller-Klasse, und welcher Container die '

+0

Ich bearbeitet für weitere Informationen, danke – autlunatic

+0

OK, ich benutze IntelliJ nicht und ich nicht benutze JavaFX, aber du hast zumindest viel wahrscheinlicher gemacht, dass jemand, der diese Dinge kennt, dir helfen kann ... in der Zwischenzeit habe ich ein bisschen herumgeschaut und keine der Tutorials und Samples, die ich habe hab für JavaFX gesehen einen Default Namespace deklariert. Versuchen Sie, das 'xmlns =" ​​http://javafx.com/javafx/8.0.65 "-Bit loszuwerden. Ansonsten habe ich keine Ideen. – dcsohl

Antwort

1

ich Ihre Klassen geladen in meinem IntelliJ IDE und es funktionierte gut. In der FXML-Datei ist keine rote Unterstreichung aufgetreten und CMD + Klick auf #btnExit in der FXML navigierte zu der entsprechenden Methodendefinition in Controller. Als Referenz ist die Version der Idee bei mir läuft:

IntelliJ IDEA 2016.3.1 EAP 
Build #IU-163.9166.7, built on November 29, 2016 
JRE: 1.8.0_112-release-408-b2 x86_64 
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o` 

Laufen auf OS X 10.9.5 und das Projekt JDK ist Oracle 1.8u102.

Ich denke, das U in der Build-Version steht für "Ultimate".

Meine Vermutung (und es ist nur das) ist, dass die Verknüpfung der FML-Dateien und Controller-Dateien eine "Ultimate" -Funktion sein könnte. Versuchen Sie, die ultimative Testversion herunterzuladen und zu prüfen, ob sie funktioniert.

Obwohl IDEA Community JavaFX unterstützen soll, unterstützt nur Ultimate CSS-Parsing und intelligentes Editieren, was ein wichtiger Teil der JavaFX-Entwicklung ist, daher ist Ultimate in jedem Fall besser für JavaFX.

Verwandte Themen