Java获取字体大小

时间:2017-10-05 10:27:53

标签: java swing fonts jpanel jtextarea

我的JFrame内有JTextArea

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

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

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

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

如何找到角色的大小?可以在没有Graphics实例的情况下完成吗?反正我不想要它的实例。我只是想知道我的角色有多大。

2 个答案:

答案 0 :(得分:1)

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

如果这不起作用,您还可以使用BufferedImage获取Graphics对象:

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

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

答案 1 :(得分:1)

  

仅供参考,我使用JFrame / JTextarea来渲染基于文本的游戏,因此我将使用此信息来缩放文本并以字符为单位获取窗口的尺寸

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

然后,您可以使用LayoutManager API,只需在pack上调用JFrame即可根据内容的首选大小打包内容窗口

这也会影响JScrollPane

的首选大小