Bouger un trait [Jpanel] - Java - Programmation
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);
}
}
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
Si quelqu'un pouvait m'aider ca serait super.
Merci