2015-04-25 9 views
7

Das ProblemLaden benutzerdefinierten Schriftart mit JavaFX 8 und CSS

Ich erstelle eine Super Mario themed CSS-Stylesheet für meine Anwendung, und ich mag die Schrift meiner Tasten, um eine benutzerdefinierte Schriftart ändern Press genannt Starten Sie 2P, die pixelierte Schriftart, die in den NES Mario-Spielen verwendet wird. Allerdings lädt meine Anwendung die Schriftart aus irgendeinem Grund nicht.

CSS-Code:

.text 
{ 
    -fx-font-family: "Press-Start-2P"; 
} 

.button 
{ 
    -fx-background-color: transparent; 
    //-fx-text-fill: rgb(255, 255, 255); 
} 

@font-face 
{ 
    font-family: Press-Start-2P; 
    src: url("PressStart2P.ttf"); 
} 

Wenn ich die Anwendung ausführen, es gibt mir diese Meldung:

25 Apr, zum Jahr 2015 08.22.32 com.sun.javafx. css.StyleManager loadStylesheetUnPrivileged INFO: @ font-face font konnte nicht geladen werden [Datei:/C:/Benutzer/Ahmad% 20El-Baher/Dokumente/Programmierung/Java/Integrative% 20Project% 20Semester% 204/trunk/build/classes/res/styles/PressStart2P.ttf]

Wie kann ich meine Anwendung richtig laden?

+0

Bedenken Sie, dass wenn Ihre CSS-Datei in Ordner (Styles) dann Ihr Code funktioniert, wenn die .ttf im Ordner Styles.Andere Weise müssen Sie den Pfad gehen, um die zu finden datei.Wenn zum Beispiel .ttf im Ordner (Parent) ist, der der Elternordner von Styles ist, muss der Pfad in css (src: url ("../ PressStart2P.ttf");) bedeutet, ich gehe einen Ordner zurück. Dies ist nur ein Beispiel. – GOXR3PLUS

+0

War meine Antwort nicht die richtige Antwort? – Underbalanced

+0

Hallo @Unbalanced! Es tut mir sehr leid, dich und alle anderen hier hängen zu lassen. Ich erinnere mich, dass ich dieses Problem schon vor langer Zeit gelöst hatte, aber ich habe diese Frage völlig vergessen, so dass ich mich erst kürzlich daran erinnerte, als du es kommentiert hast. Leider kann ich mich nicht erinnern, wie ich dieses Problem gelöst habe, also weiß ich nicht, was ich mit dieser Frage von mir machen soll ... – gameCoder95

Antwort

0

Überprüfen Sie, ob sich Ihre CSS-Datei und die TTF-Datei im selben Verzeichnis befinden. Nach Ihrem Code, src: url("PressStart2P.ttf"); sollten sie im selben Verzeichnis sein.

Versuchen Sie auch,

@font-face 
{ 
    font-family: Press-Start-2P; 
    src: url("PressStart2P.ttf"); 
} 

mit

@font-face 
{ 
    -fx-font-family: 'Press-Start-2P'; 
    src: url('PressStart2P.ttf'); 
} 
+0

versuchte dies, funktioniert nicht –

10

Hinweis ersetzt, dass die unten funktioniert nur mit Java-Versionen> = 1.8u60

Ich hatte die gleichen Probleme. Der Weg zum Laden von CSS in JavaFX 8 ist, indem Sie die Font-Face-Datei einstellen und dann den Font-Namen als Referenz verwenden, der durch eine Vorschau der Schriftart gefunden werden kann.

Die Schriftartdatei ist relativ zu CSS. Ich habe die Wurzel mit der Schriftart festgelegt, aber Sie können das entfernen und es pro Knoten basierend lassen.

CSS-Code

@font-face { 
    src: url("freeuniverse2.ttf"), 
} 

.root { 
    -fx-background-color: gray; 
    -fx-font-family: "Free Universe 2"; 
} 

#window { 
    -fx-border-image-source: url("images/windowfill.png"); 
    -fx-border-image-slice: 17 6 13 6 fill; 
    -fx-border-image-width: 17 6 13 6 ; 
    -fx-background-color: gray; 
} 

.text { 
    -fx-text-fill: white; 
    -fx-font-size: 16px; 
    -fx-font-family: "Free Universe 2"; 
    -fx-background-color: transparent; 
} 

.pane { 
    -fx-border-image-source: url("images/windowfill.png"); 
    -fx-border-image-slice: 17 6 13 6 fill; 
    -fx-border-image-width: 17 6 13 6 ; 
    -fx-background-color: gray; 
} 

.vbox { 
     -fx-border-image-source: url("images/windowfill.png"); 
    -fx-border-image-slice: 17 6 13 6 fill; 
    -fx-border-image-width: 17 6 13 6 ; 
    -fx-background-color: gray; 
} 

#title-text { 
    -fx-text-fill: white; 
    -fx-font-size: 36px; 
    -fx-font-family: "Free Universe 2"; 
} 

.label { 
    -fx-text-fill: white; 
    -fx-font-size: 16px; 
    -fx-font-family: "Free Universe 2"; 
    -fx-background-color: transparent; 
} 

Font Dateivorschau (Weiter unten finden Sie die reale Font Name sehen)

Font File Preview

+0

Bravo! Sehr gute Antwort +1. – GOXR3PLUS

+0

Es ist wichtig, den gleichen Schriftfamiliennamen zu verwenden wie in den Schriftdaten, andernfalls wird die Schriftart nicht vom CSS verwendet. –

0

Ich weiß, dass es ein bisschen spät ist. Aber für diejenigen, die noch in Not sind, denke ich, dass das Problem darin besteht, dass Sie Leerzeichen in Ihrem Projektnamen haben. Versuchen Sie, Ihr Projekt mit IntegrativeProjectSemester4 umzubenennen