Здравствуйте! Как лучше дописать код?
Есть код:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.Random;
import javax.swing.JPanel;
import javax.swing.Timer;
public class New extends JPanel {
GeneralPath shape;
private AffineTransform transformers;
Random r = new Random();
final double y = r.nextInt(100);
final double x = r.nextInt(100);
double x1 = x+100;
double y1 = y+100;
double q = x+100;
double w = y+100;
public New() {
// setSize(new Dimension(400, 400));//устанавливаю размер
GeneralPath path = new GeneralPath();
path.append(new Ellipse2D.Double(q++, w++, 10, 10),true);//для точки посередине
path.append(new Line2D.Double(x1+100, y1+100, x1-100, y1-100), false);//для вращающегося отрезка
Timer tm = new Timer(100, new ActionListener() {
int i = 0;
int u = 0;
@Override
public void actionPerformed(ActionEvent e) {
transformers = AffineTransform.getRotateInstance(i++ * 0.09, x1, y1);//для вращения отрезка в определенную сторону
//void move()
repaint();
}
});
tm.start();
shape=path;
}
public void move(){
q += q;
w += w;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Graphics2D g3 = (Graphics2D) g;
g2.transform(transformers);
Color newColor = new Color(139, 0, 0);
g.setColor(newColor);
BasicStroke pen = new BasicStroke(1);
g2.setStroke(pen);
g2.draw(shape);
}
}
И:
import java.awt.Dimension;
import javax.swing.*;
public class JavaApplication15 {
/**
* @param args the command line arguments
*/
public static void main(final String[] args) {
JFrame fr = new JFrame("Программа");
JPanel pan = new New();
fr.setPreferredSize(new Dimension(400, 400));
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane sp = new JScrollPane(pan);
fr.add(sp);
fr.pack();
fr.setVisible(true);
}
}
Нужно сделать так, чтобы точка, которая на отрезке, двигалась по этому самому отрезку из 1 конца в другой, как это сделать? Пересмотрев кучу информации, у меня так и не получилось сдвинуть ее с места на прямой