2013-08-23 3 views
0

Я работаю над своим университетским проектом ... У меня проблема с вращением jlabel. JLabel, который я хотел бы повернуть, - это корабль. Метка должна вращаться в зависимости от заголовка судна. У меня заголовок отображается на отдельном jpanel - я рисую аналоговый элемент управления при запуске, «рука» (или стрелка или что-то еще) элемента управления рисуется позже с помощью getGraphics(). Вот код:java swing - JLabel не вращается

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().

Проблема: этикетка не вращается !!! 1-й - Почему он не вращается и как его вращать (я бы хотел остаться с getGraphics, потребуется много времени, чтобы перестроить мой проект заново с помощью переопределяющего метода paintComponent и т. Д.

+0

Идите с трудоемким маршрутом, потому что, если вы используете качели, это правильный способ сделать это. Графический объект, возвращаемый 'getGraphics()', не гарантированно будет полезен в swing. – kiheru

+0

Хорошо, но как избежать ограничений, установленных идеей neatbeans (window builder) ...?! – nilux

+0

Извините, это то, с чем я не знаком. Я был бы удивлен, если бы netbeans не позволяли вам правильно сделать рисунок. – kiheru

ответ

Смежные вопросы