在Java中为可执行的JAR文件添加自定义字体文件。

huangapple go评论76阅读模式
英文:

Add custom font file on java for executable JAR file

问题

我正在尝试将自定义字体添加到我的jswing应用程序中,但我找不到如何正确上传.ttf文件,以便在我创建可执行的JAR文件后可以使用它。

问题出在这里,新文件(getClass().getResourceAsStream("/" + "cs_regular.ttf"))

谢谢!

尝试以下代码:

try {
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(getClass().getResource("/cs_regular.ttf").toURI())));
} catch (FontFormatException | IOException | URISyntaxException e) {
    pr("Error_107");
}
英文:

I am trying to add custom font to my jswing application, and i can't find how to properly upload the .ttf file so that i can use it once i create a executable jar file.

problem here, new File(getClass().getResourceAsStream("/"+"cs_regular.ttf"))

thank you!

try {
	     GraphicsEnvironment ge = 
	         GraphicsEnvironment.getLocalGraphicsEnvironment();
	     ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(getClass().getResourceAsStream("/"+"cs_regular.ttf"))));
	} catch (FontFormatException|IOException e) {
	     pr("Error_107");
	}

答案1

得分: 1

这并不是很容易从流创建 java.io.File,你可以直接从流创建字体。
看一下这个答案。
https://stackoverflow.com/a/40862139/10999348

英文:

It is not quite easy to create java.io.File from stream, you can create Font from stream directly.
look at this answer.
https://stackoverflow.com/a/40862139/10999348

答案2

得分: 1

这是我的现成代码

InputStream stream = ClassLoader.getSystemClassLoader().getResourceAsStream("cs_regular.ttf");
try {
    csfont = Font.createFont(Font.TRUETYPE_FONT, stream).deriveFont(48f);
} catch (FontFormatException | IOException e) {
    // 处理异常
}
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(csfont);
英文:

This is my working code now

InputStream stream =ClassLoader.getSystemClassLoader().getResourceAsStream("cs_regular.ttf");
	try {
		csfont = Font.createFont(Font.TRUETYPE_FONT, stream).deriveFont(48f);
	} catch (FontFormatException|IOException e) {
		//handle exeption
	} 
	GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
	ge.registerFont(csfont);

huangapple
  • 本文由 发表于 2020年8月16日 17:49:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/63435425.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定