Schriftarten importieren - mit getClass().getResource()?

Status
Nicht offen für weitere Antworten.

Dirt Devil

Mitglied
Hi Leute,

ich hab mal wieder das Problem bei den Applets, externe Dateien (hier eine Schriftart im TrueType-Format) einzulesen. Im Appletviewer läuft alles wie am Schnürchen, nur im Browser gibts wieder einmal Mecker.
Hier erst mal der Code:

Code:
import java.awt.*;
import javax.swing.*;
import java.io.*;

public class test extends JApplet
{
    Font fTest;
    String msg;

    public void init()
    {
        getDocumentBase();
        getCodeBase();
        try
        {
            fTest = Font.createFont(Font.TRUETYPE_FONT, new File("abc.ttf"));
            fTest = fTest.deriveFont( 20f );
            msg = "Datei erfolgreich geladen!";
        }
        catch (IOException e)
        {
            msg = "Datei nicht gefunden!";
        }
        catch (FontFormatException d)
        {
            msg = "Font Format inkompatibel!";
        }
    }


    public void paint(Graphics g)
    {
        g.setFont(fTest);
        g.setColor(Color.white);
        g.fillRect(0, 0, 200, 100);
        g.setColor(Color.black);
        g.drawString("AAA", 20, 20);
        g.drawString(msg,20,50);
    }
}

Im Browser wird der Text "Datei nicht gefunden!" ausgegeben; es wird also eine IOException geworfen.

Ich habe in anderen Threads gelesen, dass das Laden solcher Dateien in den Browser-Applets mit dem Befehl "getClass().getResource()" möglich ist. Leider bin ich noch nicht dahinter gekommen, wie ich diesen Befehl einbinden kann, da "getClass().getRessource()" eine URL zurückgibt und ein FileInputStream damit nicht viel anfangen kann.

Ich wäre euch sehr dankbar, wenn ihr meinen Quelltext ergänzen könntet, da mich langsam diese Java-Security zu nerven beginnt :roll:

Vielen Dank im Vorraus,
Dirt Devil

P.S.: Ich habe eine signierte *.jar Datei erstellt, auf das das HTML-Document als ARCHIVE zurückgreift. So weit bin ich schon :bae:
 

Wildcard

Top Contributor
Mach den Font doch einfach in das jar.
Dann kommst du mit getClass().getResource an die Datei.
new File("abc.ttf")
Das Applet läuft auf dem Client, du suchst also nach der Datei abc.ttf im aktuellen user-dir des Client Rechners.
 

Dirt Devil

Mitglied
Hab ich doch alles schon getan. "abc.ttf" hab ich schon in die jar Datei gepackt, passiert aber nicht sonderlich mehr....

Also in der jar Datei befinden sich die beiden folgenden Dateien:
test.class
abc.ttf

Inhalt des HTML-Dokuments:
Code:
<html>
    <head>
        <title>test Applet</title>
    </head>
    <body>
        <h1>test Applet</h1>
        <hr>
        <applet
            archive="test.jar"
            code="test.class" 
            width=500 
            height=500
            alt="Your browser understands the &APPLET& tag but isn't running the applet, for some reason."
         >
            Your browser is ignoring the &APPLET& tag!      
        </applet>
        <hr>
    </body>
</html>

Ich hoffe ihr könnt mit diesen genaueren Informationen mehr anfangen.
 

Wildcard

Top Contributor
auf Resourcen in einer jar kann man nur mit getResource zugreifen.
Das Verzeichnis das die Schrift enthält muss dabei im Manifest bekannt gegeben werden.
 

Dirt Devil

Mitglied
Kannst du bitte die Initialisierung des Fonts als Beispiel in deine nächste Antwort schreiben? Ich komm nicht hinter die Nutzung des getClass().getResource().
Danke
 

Wildcard

Top Contributor
Code:
Font f = Font.createFont(Font.PLAIN, getClass().getResourceAsStream("/path/to/abc.ttf"));
 

Dirt Devil

Mitglied
Es klappt! :applaus:
Ich danke dir von Herzen :bae:
Du bist mein neuer Held für die nächste Zeit :D

Vielen vielen Dank,
Dirt Devil
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben