Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno JavaFX - Problém s nastavením fontu z extérního souboru

Dobrý den,

Při spuštění tohoto kódu se zobrazí obyčejný text

import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class TextFont extends javafx.application.Application {

    @Override
    public void start(Stage stage) {
        var text = new Text("EXAMPLE");
        text.setFont(Font.loadFont(getClass().getResourceAsStream("GT Pressura Mono Regular Regular.ttf"), 100));
        text.setTextOrigin(VPos.TOP);
        var pane = new Pane(text);
        stage.setScene(new Scene(pane, 200, 200));
        stage.show();
    }

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

[]

Proč tomu tak je? Font jsem stáhl zde a nachází se ve stejném adresáři. Kód jsem nijak neměnil a ještě půl dne zpět to fungovalo.

V čem je, prosím Vás, problém?

Děkuji

Předmět Autor Datum
Tak nakonec jsem problém jiným způsobem a teď už to funguje import java.io.File; import java.io.Fil…
MichalDM 20.03.2021 23:00
MichalDM
Kód v zadaní funguje. Problém vznikl pouze použitím Java 16, na kterou NetBeans ještě není optimaliz… poslední
MichalDM 24.03.2021 23:20
MichalDM

Tak nakonec jsem problém jiným způsobem a teď už to funguje

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextBoundsType;
import javafx.stage.Stage;

public class TextFont extends javafx.application.Application {

    @Override
    public void start(Stage stage) {
        var text = new Text("EXAMPLE");
        text.setBoundsType(TextBoundsType.VISUAL);
        text.setTextOrigin(VPos.TOP);
        var file = new File("src/example/GT Pressura Mono Regular Regular.ttf");
        try {
           var font = Font.loadFont(new FileInputStream(new File(file.getAbsolutePath())), 50);
            text.setFont(font);
        } catch (FileNotFoundException ex) {

        }
        text.setFill(Color.BLUE);
        var pane = new Pane(text);
        var scene = new Scene(pane, 200, 200);
        stage.setScene(scene);
        stage.show();
    }

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

[]

Přesto nechápu, proč musím použít tak složitý způsob, který je nutný ještě dát to try-catch. Chtěl bych použít pouze relativní cestu, ale to dám do samostatné otázky.

Zpět do poradny Odpovědět na původní otázku Nahoru