IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[GEOM][TIMER] Ellipse animee


Sujet :

Windows

  1. #1
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Points : 83
    Points
    83
    Par défaut [GEOM][TIMER] Ellipse animee
    Bonjour,

    je voudrais fair afficher les coordonnes (en texte) d'un Ellipse au fur et a mesure que celle-ci bouge dans un fenetre (frame).

    J'ai deux classes:


    AnimatedFrame.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public class AnimatedFrame{
         public static void main(String[] args) {       
            final JFrame frame = new JFrame();
            final int FRAME_WIDTH = 450;
            final int FRAME_HEIGHT = 550;
            final Ellipse2D.Double shape =  new Ellipse2D.Double(10,10,18,15);
            ViewerComponent picture = new ViewerComponent(shape);
            frame.getContentPane().add(picture);
            frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
            frame.setTitle("Moving Ellipse");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // allow frame to close
            frame.setVisible(true);
            
            class BoxMover implements ActionListener {
                public void actionPerformed(ActionEvent event){
                    double x;
                    double y;
                    x=shape.getX();
                    y=shape.getY();
                    shape.setFrame(x+3,y+3,50,50);
                    
                    if (shape.getX() >= FRAME_HEIGHT){
                        shape.setFrame(x+3,y+3,50,50);}
                        else if (shape.getY() >= FRAME_WIDTH)
                        shape.setFrame(10+3,10+3,50,50);
                    frame.repaint();
                    }
            }
            ActionListener listener = new BoxMover();
            final int DELAY  = 100;
            Timer t = new Timer(DELAY, listener);
            t.start();
        }
    }
    Et ViewerComponent.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class ViewerComponent extends JComponent{
        private Shape s;
        public ViewerComponent(Shape s){
            this.s = s;
        }
        AnimatedFrame ani = new AnimatedFrame();
        public void paintComponent(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;  
            g2.setColor(Color.BLACK);
            g2.fill(s);
            g2.setColor(Color.YELLOW);
            g2.draw(s);
            g2.setColor(Color.RED);
            g2.drawString("The shape is: " **** , 20, 450);
        }      
    }
    dans ****: je met quoi? un toString() ? accesseur method ?

    P.S: tout les packages necessaires ont ete importes.

    Merci.

  2. #2
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Par exemple tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Rectangle contour = this.s.getBounds();
            g2.drawString("The shape is: ("+contour.x+","+contour.y+") "+contour.width+"x"+contour.height , 20, 450);
    Rectangle est dans le package java.awt
    En fait c'est getBounds() qui te donne l'information sur la position et les dimensions de ta Shape
    Pour avoir une réponse efficace :
    1) Soyez précis dans vos questions
    2) Choisssez bien votre forum
    3) Consultez la FAQ et la doc avant

  3. #3
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Points : 83
    Points
    83
    Par défaut
    Merci JHelp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire un Timer de fonction PORTABLE ?
    Par dieuP1guin dans le forum C
    Réponses: 3
    Dernier message: 04/07/2003, 10h44
  2. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47
  3. [] [Réseau] Anti-timer, anti-idle
    Par clonevince dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/01/2003, 22h19
  4. Timer de précision
    Par guigui dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2002, 15h21
  5. Timer en µsecondes
    Par Dagobert dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 25/11/2002, 00h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo