Partage
  • Partager sur Facebook
  • Partager sur Twitter

animer un rectangle avec thread

    22 mai 2009 à 11:54:12

    Bonjour,
    j'essaye d'animer (à l'aide du Thread) un rectangle qui commence d'une ligne de mon tableau qui descend jusqu'à atteindre une valeur de Y, aprés qui bouge vers la gauche jusq'à atteindre une nouvelle position et aprés il remonte...en bref je veux assimiler le faite que les valeur de deux cases change...
    voici le code de ma calsse Fenetre
    import java.awt.BorderLayout;
    import java.awt.Color;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTable;
     
     
     
     
    	public class Fenetre extends JFrame{
    		 
            private Panneau pan = new Panneau();
          JTable table=new JTable();
        private JPanel container = new JPanel();
     
     
        private int y ;
        private Thread t;
        
        public Fenetre(){
               
                this.setTitle("Animation");
                this.setSize(300, 300);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setLocationRelativeTo(null);
     
                container.setBackground(Color.white);
                container.setLayout(new BorderLayout());
                container.add(pan, BorderLayout.SOUTH);
                
             
                
                JPanel south = new JPanel();
     
            	String[] columnNames = {"","44","55","12","42","94","18","06","67"};
            	Object[][] data = {
            	 {"i=0","      44","      55","      12","      42","      94","      18","      06","     67"},
            		};
            	
               table = new JTable(data, columnNames);
             south.add(table);
              
                container.add(south, BorderLayout.NORTH);
               t = new Thread(new PlayAnimation());
        		t.start();
                this.setContentPane(container);
                this.setVisible(true);
                            
        }
            
            private void go(){
               int x=pan.getPosX();
                    y = pan.getPosY();
            
            while(y<100){         
                	pan.setPosY(++y);
                    pan.repaint();
     if(y==90){while(x>pan.getPosX()){
    	 
    	 pan.setPosX(--x);
     pan.repaint();}
     while(y!=0){
    	 pan.setPosY(--y);
    	 pan.repaint();}
     }
                try {
                        Thread.sleep(3);
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
            }       
            }
     
         
            
            class PlayAnimation implements Runnable{
     
                    @Override
                    public void run() {
                            go();                   
                    }               
            }    }
    



    et celui de mon panneau
    import java.awt.Color;
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
     
    	@SuppressWarnings("serial")
    	public class Panneau extends JPanel {
    		private int X=this.getHeight()/9;
    		private int Y=0;
    		
    		 
    		
    		 
     
    		public void paintComponent(Graphics g){
    			g.setColor(Color.white);
    	        g.fillRect(0, 0, this.getWidth(), this.getHeight());
    	    	g.drawRect(X*70,Y,X,10);
    			g.setColor(Color.pink);
    			g.fillRect(X*70,Y,X,10);
    			g.drawString("6", X/4,5 );
    	   
    			
    			}
     
    	public int getPosX(){
    		return X;
    	}
    	public int getPosY(){
    		return Y;
    	}
    	public void setPosX(int x){
    		this.X=x;
    	}
    	public void setPosY(int y){
    		this.Y=y;
    	}
    	}
    



    j'arrive à faire visulaiser la 2 eme ligne de mon tableau , la premiere ne s'affiche pas , je ne sais pourquoi..
    pour le rectangle je voiafficher un petit rectangle tout en bas de ma fenetre,sans aucune animation
    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2009 à 16:53:28

      Ben j'ai essayé ton code vite fait y'a quelques jours et honnêtement faut revoir le fonctionnement. Et puis je ne vois vraiment pas ce que tu veux obtenir, en relisant quinze fois ta phrase je vois toujours pas.

      Tu devrais d'abord faire des animations simples (type tuto de cysboy) pour voir le fonctionnement d'une animation.

      Je pense même que tu devrais créer une classe Curseur (ou appelle là comme tu veux) qui représenterait ton rectangle. Et mettre une méthode seDessiner(Graphics) que tu appellerais dans le JPanel qui contient ta JTable...
      • Partager sur Facebook
      • Partager sur Twitter

      animer un rectangle avec thread

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown