我的JFrame
内有JTextArea
。
Font font = new Font("monospaced", Font.PLAIN, 14);
textarea.setFont(font);
由于字体是等宽字体,因此所有字符的宽度和高度都相同。
我想知道这个宽度和高度是多少像素。
为此,我可以使用font.getStringBounds
但我没有Graphics
上下文传递给它。 frame.getGraphics()
会返回null
。
如何找到角色的大小?可以在没有Graphics
实例的情况下完成吗?反正我不想要它的实例。我只是想知道我的角色有多大。
答案 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#setColumns
和JTextArea#setRows
,这将使用基于字体的信息自动确定其首选大小
然后,您可以使用LayoutManager
API,只需在pack
上调用JFrame
即可根据内容的首选大小打包内容窗口
这也会影响JScrollPane