2017-10-05 1 views
0

JFrameJTextArea이 있습니다.Java 글꼴 크기 가져 오기

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

글꼴이 고정 폭 글꼴이므로 모든 문자의 너비와 높이가 동일합니다.

이 너비와 높이가 픽셀 단위로 무엇인지 알고 싶습니다.

이 경우 나는 font.getStringBounds을 사용할 수 있지만 전달할 Graphics 컨텍스트가 없습니다. frame.getGraphics()null을 반환합니다.

문자의 크기는 어떻게 확인할 수 있습니까? Graphics 인스턴스없이이 작업을 수행 할 수 있습니까? 어쨌든 나는 그것을 원하지 않는다. 나는 내 캐릭터가 얼마나 큰지 알고 싶다.

+0

귀하의 질문의 추천 사이즈에 영향을 미칠 것입니다 크기를

이 선호하는 것은, 분명하지 않다 당신은 코드의 널 부분에 더 많은 정보를 제공 할 수 있습니다. –

+0

"size"글꼴은 렌더링 대상의 컨텍스트를 기반으로합니다. 일반적으로'Graphics # getFontMetrics' 또는 이와 관련된 메소드를보고 싶습니다. 사용 가능한'Graphics' 문맥이 없다면,'BufferedImage'를 만들고 그것을 사용할 수 있습니다. 질문은 다음 중 하나가됩니다. 왜이 정보를 원하십니까? – MadProgrammer

+0

@MadProgrammer 고맙습니다 .- 나는 BufferedImage를 살펴볼 것입니다. 참고로 저는 텍스트 기반 게임을 렌더링하기 위해'JFrame' /'JTextarea'를 사용하고 있습니다. 그래서이 정보를 사용하여 텍스트 크기를 조정하고 창의 크기를 문자 단위로 가져옵니다. – Lolums

답변

1

JFrame#getFontMetrics은 JFrame의 수퍼 클래스 중 하나가 Component이므로 사용할 수 있습니다. 문제가 해결되지 않으면

, 당신은 또한 Graphics 개체를 가져 BufferedImage를 사용할 수 있습니다

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

당신은 Graphics의 인스턴스를 얻기 위해 image 객체를 사용할 수 있습니다. 참고로

+0

아니요. JFrame에 대해 이야기하고 있습니다. # getFontMetrics Graphics # getFontMetrics가 아닙니다. – Dinh

+0

내 대답이 잘못되었다고 생각하기 때문에 Graphics 객체를 얻는 또 다른 방법을 추가했습니다. – Dinh

+0

Ahh, my bad! 당신 말이 맞아, 그게 효과가있는 것처럼 보입니다. – Lolums

1

, 나는 텍스트 기반의 게임을 렌더링하기 위해 JFrame의/JTextArea에 사용하고, 그래서 문자 단위로 창의 크기를 텍스트를 확장하고 얻기를 위해이 정보를 사용합니다

단순히 자동으로

그런 다음 LayoutManager API를 사용할 수있다 단순히에 pack 전화 크기를 선호하는 것에 대해 글꼴을 기반으로 정보를 사용합니다 JTextArea#setColumnsJTextArea#setRows이 결정을하기 위해 사용하는 것이 더 좋을 것이다, 아마 가장 좋은 방법이 아니다 그 이를 기반으로 내용 주위의 창을 포장합니다 JFrameJScrollPane

+0

Aha , 나는 setRows 및 setCols를 사용하여 시도했지만 불행히도 효과가 없었습니다. – Lolums

+0

* "setRows 및 setCol을 사용하려했지만 불행히도 효과가 없었습니다."* 그런 다음 다른 것이 잘못되어 조사 및 해결해야합니다. –

+0

@Lolums 나는이 기술을 여러 번 사용 했었고 아주 잘 작동한다. 앤드류 (Andrew)가 말했듯이, 작동하지 않는다면, 당신이하는 일 때문에 가능성이있다. – MadProgrammer