【发布时间】:2012-01-23 16:24:57
【问题描述】:
有没有办法以 1 度的步长将 Swing 文本(例如在 JLabel 中)在 0 到 360(或 -180 到 180)度之间旋转?
【问题讨论】:
有没有办法以 1 度的步长将 Swing 文本(例如在 JLabel 中)在 0 到 360(或 -180 到 180)度之间旋转?
【问题讨论】:
是的。查看 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(double theta, double x, double y)
【讨论】:
我不相信 Swing 对此提供明确的支持。
但是,您可以使用 AffineTransform 类将文本转换为图像并旋转它。
这里有一些example code,显然取自“Swing Hacks”一书,用于倒写文本。您可以轻松修改它以旋转文本,尽管您必须添加一些动画效果代码。
【讨论】:
不是 JLabel 而是 JEditorPane 内容http://java-sl.com/vertical.html
【讨论】: