java frame

Тема в разделе "Флудилка", создана пользователем Redn, 19 июл 2015.

  1. Redn

    Redn Гик

    подскажите в чем проблема . пытаюсь воспроизвести анимацию покадрово спомошью java но первые 3 кадра ресуются и останавливаются хотя поток продолжает выполнятся . но если увеличить или переместить итд окно анимации то несколько кадров отресуется а потом снова как будто зависает. код :
    Код (Text):
    package main;

    import helperPack.Bootonlist;

    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.ImageIcon;
    import javax.swing.JPanel;

    public class Updater extends JPanel implements Runnable,ActionListener
    {
       
        private Thread T = new Thread(this);
        static Bootonlist B = new Bootonlist();
        static Window W = new Window();
     
        @Override
        public void run() {
       
            while(true)
            {
                actionPerformed(null);
                try {
                    T.sleep(16);
                } catch (InterruptedException e) {
                    //TODO Auto-generated catch block
                    e.printStackTrace();
                }
                   
            }
           
        }
       
        int p = 0;
        public void paint(Graphics g)
        {
            p++;
                Image img = new ImageIcon("F:/projectGame/projectGame/tower1/tower1_ "+p+".png").getImage();
                g = (Graphics2D) g;
                g.drawImage(img,0,0,null);
                System.out.println(p);
                if(p == 60)
                p = 0;
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            repaint();
        }
    }
    p.s поток запускается в другом класе
     
  2. Kopilov

    Kopilov Гик

    Код не компилируется (не предоставлен класс helperPack.Bootonlist, неизвестный класс Window (java.awt.Window не имеет конструктора без аргументов)) , так что не протестировать.

    На всякий случай: поток запускаете методом .start() ?