Отрисовкой анимации - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д