如何旋转Swing文本?

时间:2011-12-19 14:50:50

标签: java swing jlabel

有没有办法旋转Swing文本,例如在JLabel中以0度到360度(或-180到180度)之间以1度的步长旋转?

3 个答案:

答案 0 :(得分:9)

是。看看Graphics2D.rotate()。对于JLabel,我认为你可以覆盖paintComponent()方法来调用rotate(x),然后调用现有的paintComponent(),然后调用rotate(-x)。 e.g。

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

我没试过这个。您可能需要添加偏移量,请参阅Graphics2D.rotate(double theta,double x,double y)

答案 1 :(得分:2)

我不相信Swing明确支持这一点 但是,您可以将文本转换为图像,然后使用AffineTransform类旋转它。

以下是一些example code,显然是从“Swing Hacks”一书中提取的,用于向后编写文本。您可以轻松地修改它以旋转文本,但您必须为动画效果添加一些代码。

答案 2 :(得分:2)

不是JLabel而是JEditorPane内容http://java-sl.com/vertical.html