import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Line{
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new DrawLine(150,300,350,300));
frame.setSize(500,500);
frame.setVisible(true);
}
}
class DrawLine extends JPanel{
int x1;
int y1;
int x2;
int y2;
int midx;
int midy;
public DrawLine(int x1, int y1, int x2, int y2){
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
midx = (x1+x2)/2;
midy = (y1+y2)/2;
}
public void animateLine(Graphics g){
g.drawLine(x1,y1,midx,midy);
g.drawLine(x2,y2,midx,midy);
}
public void paintComponent(Graphics g){
final Graphics2D g2d = (Graphics2D)g;
animateLine(g2d);
}
}
Итак, у меня есть довольно простой код, чтобы нарисовать линию от каждого конца до средней точки. Я пытаюсь сделать анимацию значения Y средней точки уменьшающейся, поэтому она сделает что-то вроде стрелки. Из того, что я собрал, мне нужно будет использовать прослушиватель действий и таймер, чтобы выполнить это, но я не смог точно выяснить, как это сделать. Если бы кто-то мог рассказать мне о том, где разместить и как использовать таймер и перерисовать(), чтобы вы могли смотреть на стрелку из строки, я бы очень признателен. Я пытаюсь использовать этот простой пример, чтобы я мог адаптировать его к более сложной анимации/чертежу.Как я могу анимировать drawLine?
+1 для переопределения 'paintComponent()', но не игнорируйте 'super.paintComponent()' и [* Начальные потоки *] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency /initial.html). – trashgod