Swing Komponenten werden durch setFont() winzig

xehpuk

Top Contributor
Heyho!

Ich wollte testen, welche Schriftarten eigentlich Unicode unterstützen (und mir keinen Kasten für ein Unicode-Zeichen anzeigen). Dafür hab ich mir ein kleines Programm gebastelt:

Java:
public class Fonts {
	public static void main(String[] args) {
		GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
		Font[] fonts = e.getAllFonts();
		JFrame frame = new JFrame("Alle Fonts!");
		JPanel panel = new JPanel();
		panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
		JScrollPane pane = new JScrollPane(panel);
		for (Font font : fonts) {
			JLabel label = new JLabel("\u2654" + font.getName()); // Weißer König (♔) als Test
			label.setFont(font);
			panel.add(label);
		}
		frame.setContentPane(pane);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(280, 460);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}

Leider werden die JLabels extrem klein, sodass ich nichts mehr erkenne. Nehme ich die 11. Zeile raus, geht es. Aber das bringt mir ja nichts.

Was mache ich falsch?
 
Hallo,

wenn du nur feststellen willst, ob eine bestimmte Schrift bestimmte Zeichen darstellen kann, kannst du die Methode .canDisplayUpTo() der Klasse Font verwenden.

MfG
hansmueller
 
Die Fonts haben dort die Größe von 1. Probiere mal [c] label.setFont(font.deriveFont(Font.PLAIN, 14));[/c] o.ä.
Oh, ich hab vergessen zu erwähnen, dass ich [c]label.setFont(font.deriveFont(12));[/c] bereits ausprobiert hatte. Nun sehe ich auch, woran es liegt. Der Dreck ist für
Code:
int
und
Code:
float
überladen, wobei Ersteres den Style ändert, Zweiteres die Schriftgröße. 😀
Es hätte also [c]label.setFont(font.deriveFont(12f));[/c] lauten müssen (oder eben dein Vorschlag).

wenn du nur feststellen willst, ob eine bestimmte Schrift bestimmte Zeichen darstellen kann, kannst du die Methode .canDisplayUpTo() der Klasse Font verwenden.
Ahhh, sehr schön. 🙂

Hmm, leider unterstützen nur sehr wenige Schriftarten die Schachfigurenzeichen. Kann man wohl nichts machen. 🙁
 

Zurück
Oben