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
的首选尺寸
我有 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