2011-12-19 114 views

回答

9

是的。看看Graphics2D.rotate()。對於JLabel,我認爲你可以重載paintComponent()方法來調用rotate(x),然後調用現有的paintComponent(),然後調用rotate(-x)。例如

protected void paintComponent(Graphics g) { 
    Graphics2D g2 = (Graphics2D)g; 
    g2.rotate(theta); 
    super.paintComponent(g2); 
    g2.rotate(-theta); 
} 

我還沒有試過這個。您可能需要添加一個偏移量,請看Graphics2D.rotate(雙THETA,雙X,雙Y)

+0

+1。剛剛嘗試過,它的工作原理。但它圍繞原點旋轉,因此也需要翻譯 - 假設海報想圍繞文本的中心旋轉。 – 2011-12-19 15:26:17

+0

感謝您的測試!很高興它的作品。 – user949300 2011-12-19 15:31:31

+0

+1另請參閱此[示例](http://stackoverflow.com/a/6333584/230513)。 – trashgod 2011-12-19 22:27:41

2

我不認爲Swing爲此提供了明確的支持。
但是,您可以將文本轉換爲圖像,然後使用AffineTransform類旋轉。

下面是一些example code,顯然取自書「Swing Hacks」,用於向後寫文本。雖然您必須爲動畫效果添加一些代碼,但您可以輕鬆修改它以旋轉文字。