2013-07-21 3 views
0

J'essaie de coder une animation simple comme un cercle en mouvement. J'ai essayé d'utiliser getGraphics() et de travailler avec cela, mais ce n'est pas dynamique et il est peint pour une seule foisProgrammation graphique dynamique (Animation)

Alors s'il vous plaît aidez-moi et me guider pour coder un programme graphique dynamique. Je veux dire par exemple définir une fonction et à chaque fois qu'elle appelle, elle dessine une ligne sur une étiquette.

+1

S'il vous plaît jeter un oeil à cette réponse [Bal Animation] (http://stackoverflow.com/a/9852739/1057230) –

+0

Encore un [exemple] (http://stackoverflow.com/a/17586464/1057230), mon préféré maintenant un jour par @MadProgrammer: - –

+2

1) Pour une meilleure aide plus rapidement, postez un [SSCCE] (http://sscce.org/). 2) Veuillez ajouter une lettre majuscule au début des phrases. Utilisez également une majuscule pour le mot I, ainsi que des abréviations et des acronymes tels que JEE ou WAR. Cela permet aux gens de comprendre et d'aider plus facilement. –

Répondre

2

Voici comment faire un rectangle de plus en plus:

public class MovingRectangle extends JPanel { 
    private Timer timer = new Timer(500, new ActionListener() { 
     public void actionPerformed(ActionEvent event) { 
      rectWidth += 100; 
      repaint(); 
     } 
    }; 

    private int rectWidth = 100; 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.drawRect(0, 0, 100. rectWidth); 
    } 

    public void start() { 
     timer.start(); 
    } 

    public void stop() { 
     timer.stop(); 
    } 

    public void reset() { 
     rectWidth = 100; 
     repaint(); 
    } 
} 
+0

Votre 'drawRect (...)' contient '.', à la place de', '. Mais pourquoi '100. rectWidth' –

+0

Ce problème est corrigé – tbodt

+0

merci beaucoup !! résolu mais comment utilisez-vous cette classe que vous avez définie? – strings95

1

vous devez remplacer le paintComponent(Graphic g). Cette méthode est appelée à chaque fois que le repaint() est appelé, vous devez donc appeler cette méthode de façon périodique.

Vous devez également définir Doublebuffering sur vrai: setDoubleBuffered(true) Il permettra d'éviter le scintillement possible de votre animation

+1

Il n'est pas nécessaire d'activer le double tampon. Il est activé par défaut. – tbodt