Java 以横向模式旋转文本

Java 以横向模式旋转文本,java,rotation,graphics2d,Java,Rotation,Graphics2d,我试图在设置为横向的报表的左上角打印一个旋转数字“999”。字符应该放在1/2英寸和1英寸以下的顶部,但没有打印到目前为止。这是我的密码: haX = 30; haY = 100; AffineTransform at = g2d.getTransform(); g2d.translate(haX + haY, 0); g2d.rotate(-Math.PI/2); Font rotatedFont = new Font(font.getFontName(), font.getStyle(),

我试图在设置为横向的报表的左上角打印一个旋转数字“999”。字符应该放在1/2英寸和1英寸以下的顶部,但没有打印到目前为止。这是我的密码:

haX = 30;
haY = 100;
AffineTransform at = g2d.getTransform();
g2d.translate(haX + haY, 0); 
g2d.rotate(-Math.PI/2);
Font rotatedFont = new Font(font.getFontName(), font.getStyle(), fs );
rotatedFont = rotatedFont.deriveFont(at);
g2d.setFont(rotatedFont);
g2d.drawString("999", haX, haY);
g2d.setTransform(at);  
任何想法都将不胜感激。 谢谢
Elliot

您不需要
仿射变换
旋转
方法是它的特例。我也不知道你为什么要调用
translate
,因为你已经知道你画画的位置了。 以下是如何旋转文本:

public class Draw extends JFrame {

    Draw() {

        setContentPane(new MyPanel());
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(300,300);
        setVisible(true);
    }

    class MyPanel extends JPanel {

        @Override
        public void paintComponent(Graphics g) {

            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D)g;
            int haX = 30;
            int haY = 100;
            g2d.rotate(-Math.PI/2, haX, haY);
            g2d.drawString("999", haX, haY);
        }
    }

    public static void main(String[] args) {

        new Draw();
    }
}

您需要为所绘制的组件调用
repaint()
。是吗?是的,它在别处叫。报告的其余部分打印得很好。Thanks@Elliot如果这解决了你的问题,请考虑接受答案,或者如果有帮助的话,投票赞成。