Java JTextArea 字体
我的电脑上安装了一个名为“BMW1”的自定义字体。我试图循环遍历此字体中的所有条目并将它们显示在 JTextArea 中。
我有以下代码:
JTextArea displayArea = new JTextArea();
Font font = new Font("BMW1", Font.PLAIN, 72);
displayArea.setFont(font);
String sample = "";
for (int current = 0; current < 300; current++)
sample += new Character((char)current).toString() + "\n";
displayArea.setText(sample);
当我运行我的程序时,它只是打印出那些小框(我认为这意味着它找不到该迭代的字体条目)。
我在这里做错了什么吗? JTextArea 是此类事情的最佳选择吗?关于如何执行此操作有什么建议吗?
I have a custom font installed on my PC called "BMW1". I'm trying to loop through all entries in this font and display them in a JTextArea.
I have the following code:
JTextArea displayArea = new JTextArea();
Font font = new Font("BMW1", Font.PLAIN, 72);
displayArea.setFont(font);
String sample = "";
for (int current = 0; current < 300; current++)
sample += new Character((char)current).toString() + "\n";
displayArea.setText(sample);
When I run my program, it just prints out those little boxes (which I assume means it couldn't find a font entry for that iteration).
Am I doing something wrong here? Is JTextArea the best option for this sort of thing? Any suggestions on how to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我不确定我可以给你一个完整的答案 - 但你的代码中的循环是错误的。
将 'current' 转换为 'char' 将创建一个 'char',表示 'current' 的 ASCII 值'。 ASCII 表中的前 27 个字符是不可打印的 - 所以这可能是你的盒子的原因。
尝试从 65 开始到 90(“A”-“Z”),看看是否有效。
I'm not sure I can give you a full answer - but the loop in your code is wrong.
The casting of 'current' into a 'char' will create a 'char' representing the ASCII value of 'current'. The first 27 characters in the ASCII table are non printable - so this might be the reason for your boxes.
Try starting from 65 till 90 ('A' - 'Z') to see if it works.
查看 Font.canDisplay(...) 方法来帮助您确定您的字体是否可以使用。
我为此目的使用了 JTextArea。
这是一个简单的演示,列出了您计算机上可用的字体:
Check out the Font.canDisplay(...) methods to help you determine if your font can be used.
I've used a JTextArea for this purpose.
Here is a simple demo that lists the font available on your machine:
使用 Font canDisplay() 方法确定 Java 无法显示该字体。
我最终切换到 C#,它对自定义字体有更好的支持(至少在这种特殊情况下)。
Used Font canDisplay() methods to determine that Java can't display this font.
I ended up switching to C# which has better support for custom fonts (at least in this particular case).