【问题标题】:How to rotate Swing text?如何旋转 Swing 文本?
【发布时间】:2012-01-23 16:24:57
【问题描述】:

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

【问题讨论】:

    标签: java swing jlabel


    【解决方案1】:

    是的。查看 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)

    【讨论】:

    • +1。刚刚试了一下,效果很好。但它围绕原点旋转,因此也需要翻译 - 假设海报想要围绕文本中心旋转。
    【解决方案2】:

    我不相信 Swing 对此提供明确的支持。
    但是,您可以使用 AffineTransform 类将文本转换为图像并旋转它。

    这里有一些example code,显然取自“Swing Hacks”一书,用于倒写文本。您可以轻松修改它以旋转文本,尽管您必须添加一些动画效果代码。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        • 2011-03-25
        相关资源
        最近更新 更多