Die Kunst der Alten Runen in Chars, leider nicht in String konvertierbar?

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
Hi, ich wollte mal ein JLabel voll mit "Runen"-Symbolen schreiben,
wie hier zu sehen ist:
Java:
char c1 = '\u16A0';
		char c2 = '\u16A1';
		char c3 = '\u16A2';
		char c4 = '\u16A3';
		char c5 = '\u16A4';
		char c6 = '\u16A5';
		char c7 = '\u16A6';
		char c8 = '\u16A7';
		char c9 = '\u16A8';
		char c10= '\u16A9';
		char c11= '\u16AA';
		JLabel l = new JLabel(""+"\n"+c1+c2+c3+c4+c5+c6+c7+c8+c9+c10+c11);
	             add(l,"Center);
Wenn aber das JLabel dann angezeigt wird, sind da anstatt der alten Rnischen symbole,
leider nur vierecke, was beweist, dass es nciht funktioniert hat, hat einer ne idee wie ich diese Alten Runen Symbole in das Jlabel bekomme?
 

Developer_X

Top Contributor
so ich hab jetzt mal das ganze so gemacht;:
Java:
char c1 = '\u160A'; //176
		Font font = Font.createFont(Font.TRUETYPE_FONT, Olivanders.class.getResourceAsStream("R1/GenAI102.TTF")); //177
		JTextArea t = new JTextArea(""+c1); //178
		t.setFont(font); //179
		t.setBackground(Color.black); //180
		t.setForeground(Color.white); //181
		X.add(t); //182
Aber jetzt kommt diese Fehlermeldung:
Code:
Exception in thread "main" java.io.IOException: Problem reading font data.
	at java.awt.Font.createFont(Unknown Source)
	at German.Olivanders.Olivanders.center(Olivanders.java:178)
	at German.Olivanders.Olivanders.<init>(Olivanders.java:34)
	at German.Olivanders.Olivanders.main(Olivanders.java:235)
Warum? In dem ordner R1
gibt es die Datei
GenAI102.TTF
ich verstehe nciht was
Olivanders.class.getResourceAsStream
sein soll
da ist der Fehler, denke ich
 
S

Spacerat

Gast
Bin mir jetzt nicht ganz sicher... aber kann es sein, dass das Problem mit dem richtigen Font erstmal zweitrangig ist und anstatt der gewünschen Charaktäre die Summe derer Werte ausgegeben wird? Ich würde, um Verwechslungen zu vermeiden, die Charatäre in ein char-Array packen und anschliessend in einen String wandeln ("String.valueOf(charArray);").
 

Developer_X

Top Contributor
Bin mir jetzt nicht ganz sicher... aber kann es sein, dass das Problem mit dem richtigen Font erstmal zweitrangig ist und anstatt der gewünschen Charaktäre die Summe derer Werte ausgegeben wird? Ich würde, um Verwechslungen zu vermeiden, die Charatäre in ein char-Array packen und anschliessend in einen String wandeln ("String.valueOf(charArray);").

geht auch nciht:
Java:
char[] c = new char[1];
		c[0] =  '\u160A';	
		Font font = Font.createFont(Font.TRUETYPE_FONT, Olivanders.class.getResourceAsStream("R1/GenR102.TTF"));
		JTextArea t = new JTextArea();
		t.setText(String.valueOf(c));
		t.setFont(font);
		t.setBackground(Color.black);
		t.setForeground(Color.white);
		X.add(t);
PS: fehlermeldung ist dieselbe
 

Geeeee

Bekanntes Mitglied
Versuch es mal anstatt mit dem getResourceAsStream mit new File(...)
schreibe ich auch gleich nochmal in den anderen Thread rein (da sind die Fehlermeldungen etwas aussagekräftiger und irgendwie klappt es bei mir gerade auch nur damit)
EDIT: gerade gehts "manchmal"...mysteriös ???:L
EDIT 2: new File("resource/blubb.ttf") -> getResourceAsStream("/blubb.ttf"). War ein reines ClassPathProblem.
 
Zuletzt bearbeitet:

Developer_X

Top Contributor
ich hab noch ein Problem
wenn ich
Font font = Font.createFont(Font.TRUETYPE_FONT, new File("R1/GenR102.TTF"));
mache dann wird die größe von "font" auf 0 gesetzt,
wie kann ich das ändern?
 

Developer_X

Top Contributor
geht immer noch nicht:
Java:
public JPanel t1() throws Exception
	{
		JPanel X = new JPanel();
		X.setBackground(Color.black);
		X.setLayout(new BorderLayout());
		char c = '\u160A';

		Font font = Font.createFont(Font.TRUETYPE_FONT, new File("R1/GenR102.TTF"));	
		font.deriveFont(10f);	
		JTextArea t = new JTextArea();
		t.setText("sdsssssss"+c);
		t.setFont(font);
		t.setBackground(Color.black);
		t.setForeground(Color.green);
		X.add(t,"Center");
		
		return X;
	}
 

Developer_X

Top Contributor
nirn dir gibt nichts zurück,
*hust*

ich hab noch extra gesagt 10f, damit Java weiß, aha der meint die größe, nicht den style, den man mit dieser methode durch einen int definiert,
also was mache ich falsch?
 

Developer_X

Top Contributor
Java:
	public JPanel t1() throws Exception
	{
		JPanel X = new JPanel();
		X.setBackground(Color.black);
		X.setLayout(new BorderLayout());
		char[] c = new char[1];
		c[0]='\u1601';

		Font font = Font.createFont(Font.TRUETYPE_FONT, new File("R1/GenR102.TTF"));	
		JTextArea t = new JTextArea();
		t.setText(" "+String.valueOf(c));
		t.setFont(font.deriveFont(20f));
		t.setBackground(Color.black);
		t.setForeground(Color.green);
		X.add(t,"Center");
		
		return X;
	}

Es wird trotzdem immer noch das Runen Symbol nciht angezeigt, warum?
 

Geeeee

Bekanntes Mitglied
Ähm...
Code:
public Font deriveFont(float size)
Ich kann es nicht glauben. :rolleyes:
Mal eine ehrliche Frage, verstehst du die folgende Beschreibung nicht?
Creates a new Font object by replicating the current Font object and applying a new size to it.
Edit:
Ok, hab etwas zuviel über meine Wortwahl nachgedacht und mir Zeit bei der Antwort gelassen :D
:lol:
 
Zuletzt bearbeitet:

Developer_X

Top Contributor
das hab ich schon kapiert, was jetzt mein problem ist, ist dass ich die Runen Symbole als Char nicht anzeigen, warum?

denn jetzt werden an den Stellen der Char Symbole nur leerzeichen gemacht
 

Civilazi

Bekanntes Mitglied
Häh, wir sollen nicht Füsse? Meinst sicher "feed".

Das war ein Zitat... Jango hatte ein Benutzerbild, auf dem stand "Don't feet Developer_X". Ich wollte also nur daran erinnern, dass einer, der in einem gläsernen Haus sitzt, sich mit Steinwürfen zurückhalten sollte :)

Diese Rechtschreib- / Grammatikdiskussionen mit Jango sind müßig.

Aber nun mal wieder langsam zurück zum Thema.
 

Noctarius

Top Contributor
Ich denke auch, dass wir hier zum eigentlichen Thema (falls es nicht gelöst ist) zurückkommen sollten. Sollte es erledigt sein bitte ich doch die sinnlose Diskussion zu unterlassen.
 

Developer_X

Top Contributor
ich hab ein Font gefunden, dass Runen unterstützt, wenn ihr es wissen wollt, und mit der oben genanntetn technik habe ich dann dies umgesetzt, und jetzt habe ichs geschafft

danke euch allen
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben