Heres часть моего простого кода. Я хочу добиться перемещения овала до курсора. Расположение оси X после нажатия левой кнопки. Проблема заключается в том, что я могу видеть только последнюю позицию овала (когда это уже останавливается). Я думаю, что метод repaint во время блокировки не работает, как хотелось бы. Я хотел бы видеть каждый ход овала как его попадание в позицию cursor.Thank вас для предложений.Java repaint проблемные овалы каждый ход
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class Testfile extends JPanel implements Runnable,MouseListener{
public static JFrame frame;
public int x;
public int y;
public int pointX;
public int pointY;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillOval(x, y, 20, 20);
}
public static void main(String args[])throws InterruptedException{
Testfile z=new Testfile();
z.setBackground(Color.cyan);
frame=new JFrame("Test");
frame.setSize(500,500);
frame.add(z);
frame.addMouseListener(z);
frame.setVisible(true);
}
public void mouseClicked(MouseEvent e){
pointX=(int)MouseInfo.getPointerInfo().getLocation().getX();
pointY=(int)MouseInfo.getPointerInfo().getLocation().getY();
try{
while(x!=pointX){
x=x+1;
Thread.sleep(10);
repaint();
}
}
catch(InterruptedException v){System.out.println(v);}
}
Почему у вас есть тег 'multithreading'? Я не вижу многопоточности в вашем коде. – Jashaszun
вы блокируете 'EDT' – nachokk