Отрисовкой анимации - Java
Формулировка задачи:
Проблемка в том что я циклом пытаюсь заставить кружок двигаться по панели в фрейме при нажатии кнопки старт. а он не хороший человек после задержки перемещается в заданную позицию. как исправить? помогите люди добрые.
public class MyFrame extends JFrame{
JPanel bPanel;
MyDrawPanel drawPanel;
JButton startButton, stopButton;
StartButtonListener listener = new StartButtonListener();
int x=0,y=50;
MyFrame(String s){
super(s);
bPanel = new JPanel();
drawPanel = new MyDrawPanel();
bPanel.setLayout(new BoxLayout(bPanel, BoxLayout.Y_AXIS));
startButton = new JButton("Start");
stopButton = new JButton("Stop");
bPanel.add(startButton);
bPanel.add(stopButton);
getContentPane().add(BorderLayout.EAST, bPanel);
getContentPane().add(drawPanel);
startButton.addActionListener(listener);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 500);
setVisible(true);
}
class StartButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent ae) {
if(ae.getSource() == startButton){
for (int i = 0; i < 250; i++) {
x++;
drawPanel.repaint();
try{
Thread.sleep(10);
}catch(Exception e){
}
}
}
}
}
class StopButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
}
}
public class MyDrawPanel extends JPanel{
public void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.red);
g.fillOval(x, y, 40, 40);
}
}
}
Думаю что проблема в слушателе кнопки. Но не могу найти решение(
Решение задачи: «Отрисовкой анимации»
textual
Листинг программы
Thread thr = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 250; i++) {
x++;
drawPanel.repaint();
try {
Thread.sleep(10);
} catch (Exception e) {
}
}
}
});
thr.start();