Java 获取字体大小

Java Get Size of Font

我有 JFrame,里面有一个 JTextArea

Font font = new Font("monospaced", Font.PLAIN, 14);
textarea.setFont(font);

由于字体是等宽字体,所有字符的宽度和高度都相同。

我想知道这个宽度和高度是多少像素。

为此,我可以使用 font.getStringBounds 但我没有 Graphics 上下文可以传递给它。 frame.getGraphics() returns null.

如何找到字符的大小?没有 Graphics 实例可以完成吗?无论如何,我不想要它的一个实例。我只想知道我的角色有多大

您可以使用 JFrame#getFontMetrics,因为 JFrame 的超类之一是 Component

如果这不行,你也可以用BufferedImage得到一个Graphics对象:

BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);

您可以使用 image 对象获取 Graphics 的实例。

FYI, I am using a JFrame/JTextarea to render a text based game, so I'll use this info for scaling the text and getting the dimensions of the window in units of characters

这可能不是最好的方法,最好只使用 JTextArea#setColumns and JTextArea#setRows,它将使用基于字体的信息自动确定其首选大小

然后您可以使用 LayoutManager API 并简单地在 JFrame 上调用 pack,这将根据首选内容将 window 打包尺码

这也会影响 JScrollPane

的首选尺寸