topic1
Messages postés7Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention 4 mai 2007
-
23 juil. 2003 à 15:16
topic1
Messages postés7Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention 4 mai 2007
-
24 juil. 2003 à 17:22
je debute en programmation java j'essaye de creer dans une Jframe trois JPanel deux affichant un graphique et un troisieme contenant des boutons
mon probleme est que quand j'utilise repaint() dans les deux zones affichages le premier se dessine dans le premier JPanel mais aussi par dessus le graphique du deuxieme JPanel comment resoudre ce probleme?
voila pour l'instant ce que j'ai fait
n'hesitez pas a envoye des remarques
import javax.swing.*;
import java.awt.*;
public class test
{
public static void main(String[] args)
{
fenetre test=new fenetre("cercle");
}
}
//////////////////////////////////////////////////////////////////////class fenetre extends JFrame
{
private pan_cercle cer;
private pan_courbe cou;
private pan_bouton bou;
public int get_nombre_tour_cercle1()
{
return nombre_tour_cercle1;
}
public int get_nombre_tour_cercle2()
{
return nombre_tour_cercle2;
}
public double get_vitesse_cercle1()
{
return vitesse_cercle1;
}
public double get_vitesse_cercle2()
{
return vitesse_cercle2;
}
public int get_bout()
{
return bout;
}
public void paintComponent(Graphics g)
{
Graphics2D g2=(Graphics2D)g;
super.paintComponent(g2);
int x=(int)(Math.cos(nombre_tour_cercle1*2*Math.PI*vitesse_cercle1)*100)+200;
int y=(int)(Math.sin(nombre_tour_cercle1*2*Math.PI*vitesse_cercle1)*100)+200;
int x2=(int)(Math.cos(nombre_tour_cercle2*2*Math.PI*vitesse_cercle2)*75)+x;
int y2=(int)(Math.sin(nombre_tour_cercle2*2*Math.PI*vitesse_cercle2)*75)+y;
//int x2=(int)((Math.cos(nombre_tour_cercle2*2*Math.PI*vitesse_cercle2)*(100+(x-200)*1.4)))+200;
//int y2=(int)((Math.sin(nombre_tour_cercle2*2*Math.PI*vitesse_cercle2)*(100+(y-200)*1.4)))+200;
benohite
Messages postés210Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention18 décembre 20037 23 juil. 2003 à 15:58
bonjour,
le probleme vient de la methode repaint() que tu appelles dans chacune des methode paintComponent de tes deux panel
en effet si tu n y fais reference (a repaint() bien sur) que dans ton panel cercle alors ton graphique se dessine correctement et ta courbe reste plate ce qui est logique
en revanche si tu fais l inverse (appel de repaint uniquement dans le panel courbe) alors ton graphique ne bouge plus et ta courbe se dessine tout en restant constante car ton grahique est figé
et bien sur comme tu l as dis un appel de repaint dans les deux panel engendre deux graphiques et un point au lieu d une courbe
tu as plusieurs solutions:
soit tu cree une classe donne qui se chargera de recupere les donne du graphique pour qu elle soient exploitable par la courbe et dans ce cas il te faut faire un processus sur cet objet afin d organiser l echange:
l objet graphique ecrit les donnes et valide pour que l objet courbe puisse les lire
ou alors tu utilise un timer qui enverra un notifcation toute les econde par ex ce qui te permettra de recupere dans les deux objets la meme valeur avant traitement