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 は編集に関していくつかの制限を設けていますinitComponents() ..

問題は: ラベルが回転していない!!! 1st-回転しない理由と回転方法(getGraphicsにとどまりたい、paintComponentメソッドなどをオーバーライドしてプロジェクトを最初から再構築するには時間がかかります...

4

1 に答える 1