[Jpanel] Bouger un trait

Bouger un trait [Jpanel] - Java - Programmation

Marsh Posté le 27-01-2008 à 21:51:15    

Bonjour à tous
 
J'ai un souci pour faire bouger un simple trait (avec DrawLine) dans un Jpanel. Sur une applet pas de probleme mais pas moyen dans un Jpanel  :fou:  :fou:  
 
Si quelqu'un pouvait m'aider ca serait super.
 
Merci

Reply

Marsh Posté le 27-01-2008 à 21:51:15   

Reply

Marsh Posté le 27-01-2008 à 23:40:50    

Sans le code ca va être un peu dur de t'aider

Reply

Marsh Posté le 28-01-2008 à 09:52:18    

C'est bon j'ai mis l'applet dans le Jpanel mais j'ai un autre probleme. Le probleme est que j'affiche 2 classes le trait et une cible de fléchette, quand j'enlève la cible, le trait bouge sans probleme mais quand je met la cible, c'est elle qui se rafraichit et le trait n'apparait pas.
 
Classe Cible qui doit faire apparaitre la cible et le trait
 
import java.awt.*;
import javax.swing.*;
import java.applet.*;
 
public class Cible extends Applet implements Runnable
{
    public Plateau p;
    public Ligne l;
    public int taille;
     
    public Thread t;
    public int px,py;
 
    public Cible()
    {
        taille = 600;
        p = new Plateau(0,0,taille);
        l = new Ligne(30,30);
        px = py = 1;
        t = new Thread(this);
        t.start();
    }
 
    public void paint(Graphics g)
    {
        Graphics2D g2 =(Graphics2D) g;
        p.dessiner(g2);
        l.dessiner(g2);
    }  
     
    public void run()
 {
  try
  {
   while (t.isAlive())
   {
    l.x += px;
    l.y += py;
    repaint();
    t.sleep(10);
   }
  }catch (InterruptedException e){}
 }
         
    public static void main(String[] args)  
    {
       new Cible();
    }
}
 
Classe Plateau qui contient les éléments de la cible
 
import java.awt.*;
import javax.swing.*;
 
 
public class Plateau extends Panel
{
    public int x,y,i,j;
    public int taille,rayon;
    public float larg2,haut2;
    public Font chiffre;
    public String nb[] = {"6","10","15","2","17","3","19","7","16","8","11","14","9","12","5","20","1","18","4","13"};
 
    public Plateau(int x, int y, int dim)
    {
        this.x = x;
        this.y = y;
        taille = dim;
    }
     
    public void dessiner(Graphics g)
    {
        Graphics2D g2 =(Graphics2D) g;
        chiffre = new Font("Courier", Font.BOLD, 40);
        larg2 = haut2 = taille/2;
        rayon = 280;
         
        //MODE Qualite et Anti-Aliasing
        RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        qualityHints.put(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
        g2.setRenderingHints(qualityHints);
           
        g2.setColor(Color.lightGray);
        g2.fillOval(x, y, taille, taille);
       
        g2.setColor(Color.red); //zone double
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/5*2),(taille/2)-(taille/5*2),(taille/5*4),(taille/5*4),i+9,18);
             
        g2.setColor(Color.green); //zone double
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/5*2),(taille/2)-(taille/5*2),(taille/5*4),(taille/5*4),i-9,18);
             
        g2.setColor(Color.black); //zone simple 1
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/27*10),(taille/2)-(taille/27*10),(taille/27*20),(taille/27*20),i+9,18);
             
        g2.setColor(Color.white); //zone simple 1
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/27*10),(taille/2)-(taille/27*10),(taille/27*20),(taille/27*20),i-9,18);
             
        g2.setColor(Color.red); //zone triple
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/19*5),(taille/2)-(taille/19*5),(taille/19*10),(taille/19*10),i+9,18);
             
        g2.setColor(Color.green); //zone triple
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/19*5),(taille/2)-(taille/19*5),(taille/19*10),(taille/19*10),i-9,18);
             
        g2.setColor(Color.black); //zone simple 2
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/42*10),(taille/2)-(taille/42*10),(taille/42*20),(taille/42*20),i+9,18);
                     
        g2.setColor(Color.white); //zone simple 2
        for(i=0;i<360;i=i+36)
            g2.fillArc((taille/2)-(taille/42*10),(taille/2)-(taille/42*10),(taille/42*20),(taille/42*20),i-9,18);
         
        g2.setColor(Color.green); //centre 25
        g2.fillOval((taille/2)-(taille/24),(taille/2)-(taille/24),(taille/12),(taille/12));
         
        g2.setColor(Color.red); //centre 50
        g2.fillOval((taille/2)-(taille/48),(taille/2)-(taille/48),(taille/24),(taille/24));  
         
        g2.setColor(Color.white);
        g2.setFont(chiffre);
               
        for(i=0;i<360;i=i+18)
        {
            double x=larg2+rayon*Math.cos(Math.toRadians(i));
            double y=haut2+rayon*Math.sin(Math.toRadians(i));
            g2.drawString(nb[j],(int)x,(int)y);
            j++;
        }
         
         
 
    }
}
 
Classe Ligne qui contient les éléments de la ligne
 
import java.awt.*;
 
public class Ligne extends Panel
{
    public int x,y;
     
    public Ligne(int x,int y)
    {
        this.x = x;
        this.y = y;
    }
     
    public void dessiner(Graphics g)
    {
        Graphics2D g2 =(Graphics2D) g;
        g2.setColor(Color.black);
        g2.drawLine(x,y,x+100,y+100);
    }
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed