2016-06-09 4 views
1

Ich arbeite über die official JavaFX tutorial. Ich versuche, den Code aus Beispiel 5-1 hinzufügen, wie meine Szene folge, der Teil der „Main“ Klasse gemäß den Anweisungen ist:JavaFX 8: Hinzufügen einer benutzerdefinierten CSS-Datei über class.getResource() Fehler

Scene scene = new Scene(grid, 300, 275); 
primaryStage.setScene(scene); 
scene.getStylesheets().add(Login.class.getResource("Login.css").toExternalForm()); 
primaryStage.show(); 

Ich bin mit JavaFX Runtime-Version 8.0.72- b15 und IntelliJ IDEA 15.0.5. Ich habe meine "login.css" Datei in dem Ordner gespeichert:

C:\Users\XXXXXXXX\IdeaProjects\Login\src 

und meine Projektdateien sind wie folgt strukturiert:

  • Anmeldung
    • .idea
    • aus
    • src
      • sa mple
        • Controller.java
        • Main.java
        • sample.fxml
      • background.jpg
      • login.css

Als ich renne "Mai n“Ich erhalte die folgende Fehlermeldung:

Information:Using javac 1.8.0_77 to compile java sources 
Information:java: Errors occurred while compiling module 'Login' 
Information:6/9/2016 2:04 PM - Compilation completed with 1 error and 0 warnings in 571ms 
C:\Users\XXXXXXXX\IdeaProjects\Login\src\sample\Main.java 
Error:(69, 36) java: cannot find symbol 
    symbol: class Login 
    location: class sample.Main 

This answer scheint zu implizieren, dass die benutzerdefinierte CSS-Datei unter dem sein sollte‚src‘-Ordner, aber es scheint nicht, für mich zu arbeiten. Wie kann ich mein JavaFX-Projekt dazu bringen, diese benutzerdefinierte CSS-Datei zu importieren?

+0

versuchen die CSS in einem neuen srcFolder namens 'Ressourcen' setzen in es schaffen ein Paket mit dem Namen 'css' und setzen Sie es in die Login.css.Then nennen es so ("/css/Login.css). – GOXR3PLUS

+0

GoXrPlus, vielen Dank für Ihren Vorschlag. Basierend auf @ Jewelsea Vorschlag, ich habe diese Zeile meines Codes folgendermaßen geändert: 'scene.getStylesheets(). add (sample.Main.class.getResource ("/ Login.css"). toExternalForm());' Das Ändern des Klassenaufrufs "Login" in einen Klassenaufruf "sample.Main" und das Hinzufügen des Symbols "/" vor "Login.css" hat es funktioniert.Danke für Ihre Hilfe! – MLev

+0

M Lev, um eine Nachricht an andere zu senden, sollten Sie @ username.Just verwenden, um zu informieren :) – GOXR3PLUS

Antwort

2

Sie haben keine Login-Klasse ... Sie haben nur eine sample.Main Klasse, daher wird die Login.class Referenz in Ihrem Code nicht aufgelöst (dieser Fehler hat nichts mit CSS zu tun).

Sobald Sie den Klassenreferenzfehler behoben haben, müssen Sie auch den Verweis auf den Speicherort der CSS-Datei korrigieren (da sich Ihre Login.css-Datei nicht im Beispielpaket befindet, sondern im Quellstammverzeichnis liegt, sodass sie eventuell kopiert wird zum Stamm Ihres Klassenpfades). Um auf eine Ressource im Stammverzeichnis des Klassenpfads zu verweisen, geben Sie / dem Ressourcennamen voran, d. H. /Login.css.

So, nach diesen Änderungen die Sie haben, der folgende Code (die Sie Arbeiten in früheren Kommentaren überprüft):

scene.getStylesheets().add(sample.Main.class.getResource("/Login.css").toExtern‌​alForm()); 
0
fxViewObject.getStylesheets().add(this.class.getResource("/Login.css").toExternalForm()); 
+2

Während dies eine Antwort auf die Frage sein könnte, würden einige weitere Hintergrundinformationen helfen, Ihre Lösung zu verstehen. –