2011-10-11 65 views
0

我正在製作一個定製的swing組件,並且遇到了問題。我想要一個簡單的文本顯示(如jlabel),隨着時間的推移會改變顏色。目前我已經擴展了JPanel並覆蓋了paintComponent(Graphics)來創建一個組件,可以繪製給定的文本並根據需要循環顯示顏色。但是,我不知道如何使它總是在組件的中心繪製文本,也不知道如何計算它自己的默認首選大小(因爲我不知道文本的確切尺寸),例如帶有文本集的JLabel自動返回getPreferredSize的正確值,並且文本始終適合標籤,這是我期望模擬的功能。有誰知道如何做到這一點?Java文本組件計算自己的首選大小

+2

爲什麼不簡單地使用JLabel呢?事實上,如果你這樣做,可能沒有理由重寫paintComponent(或者甚至擴展JLabel),因爲你可以在Swing Timer中簡單地改變它的前景色。 –

+0

這是一個學習練習,我比結果更感興趣的概念。否則,這幾乎是我該怎麼做的;) – James

+1

然後這應該在原始問題中說明,我們不必浪費時間回答一個不完整的問題。所述問題的正確答案是簡單地使用JLabel。否則,您將需要使用FontMetrics,如z5h的帖子中所述(1+給他)。 –

回答

4

FontMetrics類用於確定具有特定字體的渲染文本的幾何形狀。這將告訴你需要多少空間來呈現文字。
查看getLineMetrics方法。

+0

謝謝,這正是我需要的 – James