2011-10-11 2 views
0

사용자 정의 스윙 구성 요소를 만들고 있는데 문제가 발생했습니다. 시간이 지남에 따라 색상이 바뀌는 간단한 텍스트 디스플레이 (예 : jlabel)가 필요합니다. 현재 JPanel과 재정의 된 paintComponent (Graphics)를 확장하여 주어진 텍스트를 그릴 수 있고 필요에 따라 색상을 순환시킬 수있는 구성 요소를 만들 수 있습니다. 그러나 구성 요소의 가운데에 항상 텍스트를 그리는 방법이나 텍스트의 정확한 크기를 모르는 상태에서 기본 기본 크기를 계산하는 방법을 모르겠습니다. 텍스트가 설정된 JLabel은 getPreferredSize에 적합한 값을 자동으로 반환하며 텍스트는 항상 라벨에 깔끔하게 맞춰집니다. 이것은 내가 모방하려고하는 기능입니다. 아무도 이것을 달성하는 방법을 알고 있습니까?Java 텍스트 구성 요소가 자체 선호 크기를 계산합니다.

+2

단순히 JLabel을 사용하지 않는 이유는 무엇입니까? 실제로이 작업을 수행하는 경우 swingComponent에서 전경색을 변경하기 만하면 paintComponent를 재정의 할 필요가 없습니다 (또는 JLabel을 확장 할 수도 있습니다). –

+0

이것은 학습 연습이며 결과보다는 개념에 더 관심이 있습니다. 그렇지 않다면 그것은 내가 어떻게했을지 거의 알지 못합니다.) – James

+1

그러면 원래의 질문에 언급되어 있었을 것입니다. 우리는 불완전한 질문에 대답하기 위해 시간을 낭비 할 필요가 없었습니다. 명시된 질문에 대한 정답은 단순히 JLabel을 사용하는 것입니다. 그렇지 않으면 z5h의 글에서 지적한대로 FontMetrics를 사용해야 할 것입니다 (그에게 1+). –

답변

4

FontMetrics 클래스는 특정 글꼴로 렌더링 된 텍스트의 모양을 결정하는 데 사용됩니다. 이렇게하면 텍스트를 렌더링하는 데 필요한 공간을 알 수 있습니다.
getLineMetrics 방법을보십시오.

+0

그게 정확히 내가 필요로하는 것입니다. – James

관련 문제