0

我正在从事我的大学项目......我对 jlabel 的轮换有疑问。我想旋转的 JLabel 是一艘船。标签应根据船的航向旋转。我将标题显示在单独的 jpanel 上 - 我在启动时绘制模拟控件,稍后使用 getGraphics() 绘制控件的“手”(或箭头或其他)。这是一些代码:

public void drawHeading (int getheading) {
    int course = getheading;
    int x,y;
    double radians;
   // appendEvent (" heading " + Integer.toString(course));

    if (course != oldHeading){
        //HeadingControl is the jpanel where I draw the analogue heading control 
        HeadingControl.validate();
        HeadingControl.repaint();
    }
    oldHeading = course;
    radians = Math.toRadians(course) - Math.PI/2;
    //this puts info in textfield
    appendEvent (" course " + Integer.toString(course)); 

    x = 120 + (int)(70*Math.cos(radians));
    y = 80 + (int)(70*Math.sin(radians));
    //i get the graphics .. then add the "hand"
    Graphics2D gfx = (Graphics2D) HeadingControl.getGraphics();
    gfx.setColor(Color.red);
    gfx.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

    gfx.drawLine(x, y, 120, 80);
    gfx.drawLine(x, y, 120, 80);
    gfx.drawLine(x, y, 120, 80);

    AffineTransform tx = new AffineTransform();
    tx.rotate(Math.toRadians(90));
    //the label is not rotated, tried ship.rotate(radians) (gfx2.rotate(radians) ... //didn't work
    Graphics2D gfx2 = (Graphics2D) ship.getGraphics();
    gfx2.transform(tx);

}

IDE = NetBeans 7.2 .. 我读过 getGraphics 不应该使用,但是...我认为这种更改为时已晚,项目太大.. netbeans 在编辑时设置了一些限制初始化组件() ..

问题是:标签没有旋转!!!第一 - 为什么它不旋转,以及如何旋转它(我想继续使用 getGraphics,使用重写的 paintComponent 方法等重新重建我的项目将非常耗时......

4

1 回答 1

1

您可以使用带有Rotated Icon的 JLabel 。

于 2013-08-23T15:03:14.860 回答