Я работаю над своим университетским проектом ... У меня проблема с вращением 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 и т. Д.
Идите с трудоемким маршрутом, потому что, если вы используете качели, это правильный способ сделать это. Графический объект, возвращаемый 'getGraphics()', не гарантированно будет полезен в swing. – kiheru
Хорошо, но как избежать ограничений, установленных идеей neatbeans (window builder) ...?! – nilux
Извините, это то, с чем я не знаком. Я был бы удивлен, если бы netbeans не позволяли вам правильно сделать рисунок. – kiheru