A partir d'une class changer la variable d'une aplet et la rafraichir - Java - Programmation
Marsh Posté le 09-04-2005 à 13:50:35
heu ben rajoute un element PagePrincipale a ton Menu et ds PagePrincipale, tu fais un truc du genre menu=new Menu(this)
ensuite appelles une fonction pour ca
genre dans PagePrincipale :
public void clickmachin() {
this.temp=1;
this.rafraichir();
}
ou alors g pas compris la question, mais faut dire qu elle est bcp trop longue, evite de mettre toutes les sources la prochaine fois, resume !
(heu sinon moi g un pb avec un langage de prog que je met au point regardez là -> java-src.zip)
Marsh Posté le 08-04-2005 à 22:34:36
Bonjour,
Je suis en train de faire un diapo.
J'ai mon applet (Pageprincipale.class), un defilement d'image (Animation.class), un menu (Menu.class)
Voila mon applet :
public class Pageprincipale extends Applet {
//champs
//Objets
private Animation animation;
private Menu menu;
private Titre titre;
private Image imgtitre;
private TableauVignette tableauvignette;
private Label ltemps,ltitre,limage;
private Image imgvignette;
private int largeurvignette,hauteurvignette;
private Image [] tabimages;
private MediaTracker mt;
private Panel p;
private int temp;
//------------------------INITIALISATION-------------------------
public void init(){
ltemps=new Label("temps" );
ltitre=new Label("titre" );
limage=new Label("image" );
// -----------------CREATION DE LA PAGE---------------
GridBagLayout g=new GridBagLayout();
GridBagConstraints c=new GridBagConstraints();
//---------CREATION DU "TABLEAU"-----------------
setLayout(g);
mt = new MediaTracker(this);
imgtitre=getImage(getCodeBase(), "Images/titre.gif" );
tabimages=new Image[10]; //remplit le tableau d'image vaec les images en parametre
for(int i=0;i<tabimages.length;i++){
tabimages[i]=getImage(getCodeBase(), getParameter("image"+i));
}
try
{
mt.addImage(imgtitre, 0);
mt.waitForAll();
}
catch(Exception ex)
{
ex.printStackTrace();
}
p = new Panel();
p.setBackground(Color.yellow);
//vas chercher quelle image vas s'afficher pour le titre
titre=new Titre(imgtitre,185,25);
c.gridx=0;//emplacement
c.gridy=0;
c.weightx=1.0;//taille
c.weighty=0.0;
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridheight = 1;
c.fill=GridBagConstraints.BOTH;//redimensionnement
g.setConstraints(titre,c); //insere les contraintes
add(titre);//insere le panel titre
//2eme Ligne // 1er Colonne-----------MENU-----------------
menu=new Menu(temp);
c.gridy=1;
c.gridwidth = 1;
c.gridheight = 1;
//taille
c.weightx = 0.0;
c.weighty=1.0;
c.fill=GridBagConstraints.NONE;
c.anchor = GridBagConstraints.NORTH;
g.setConstraints(menu,c); //insere les contraintes
add(menu);//insere le label temps
//2eme Ligne //2eme Colonne -----------PAGE MILIEU---------------
//Rempli le tableau d'image
animation=new Animation(tabimages);
tableauvignette=new TableauVignette(tabimages);//creer l'objet tableauvignette
c.gridx=1;
c.fill=GridBagConstraints.BOTH;
c.anchor = GridBagConstraints.CENTER;
c.weightx = 1.0;
c.gridwidth = GridBagConstraints.REMAINDER;
g.setConstraints(tableauvignette,c); //insere les contraintes
if(temp==0){
add(tableauvignette);//insere le texte dynamique
}
if(temp==1){
add(animation);//insere le defilement d'images
}
Mon Animation :
public class Animation extends Panel implements Runnable {
private Image[]tabimages;
private int compteur=0;
private MediaTracker mt;
private Thread thread;
private String nom;
private ArrayList tabimg;
public Animation(Image[]tabimages){
this.tabimages=tabimages;
}
public void start(){
(thread=new Thread(this)).start();
}
public void stop(){
thread=null;
}
public void paint (Graphics g){
g.drawImage(tabimages[compteur],0,0,this);
}
public void run(){
int delai=2000;
try{
while(thread == Thread.currentThread()) {
compteur=(compteur+1)%tabimages.length;
repaint();
Thread.sleep(delai);
}
}
catch(Exception e){
e.getMessage();
}
}
}
Et mon Menu :
public class Menu extends Panel implements ActionListener{
//------------------CHAMPS---------------------------------------------
private int temp;
private CheckboxGroup cbg; //groupes pour boutons radio
private Checkbox[] boucle; //cases boutons radio
private Label ltemps, lboucle; //labels
private TextField texte; //champs texte
private Button bouton; // bouton
private Choice effets,duree; //combo
String []danseffets={"temp1","temp2","temp3","temp4","temp5"}; // dans combo
String []dansduree={"1 min","5 min","10 min","30 min","1 heure"};// dans combo
//----------------CONSTRUCTEUR -------------------------------------------
public Menu(){
//------------------Instanciation des composants------------------------
//boutons radio
cbg=new CheckboxGroup();
boucle= new Checkbox[2];
boucle[0]=new Checkbox("En boucle",cbg,false);
boucle[1]=new Checkbox("Normal", cbg, false);
//les labels
ltemps=new Label("temps" );
lboucle=new Label("Boucles ou Normal" );
//champs texte
texte=new TextField ("000",3);
//Bouton
bouton=new Button("Démarrer" );
// choix de l'écouteur
bouton.addActionListener(this);
//les combos
effets=new Choice();
for(int i=0;i<danseffets.length;i++){
effets.add(danseffets[i]);
}
duree=new Choice();
for(int i=0;i<dansduree.length;i++){
effets.add(dansduree[i]);
}
//-------------------Mise en page ----------------------------
setLayout(new GridLayout(7,1));
//--------------Ajout des composants-------------------------
add(ltemps);
add(texte);
add(effets);
add(duree);
add(bouton);
add(boucle[0]);
add(boucle[1]);
}
public void actionPerformed(ActionEvent evt) {
if ( (Button) evt.getSource() == bouton ) {
???????????
}
}
}
En fait je sais pas comment lui dire que, quand je clic sur le bouton, il vas me mettre la variable temp a 1 dans l'applet et me le rafraichit, pour pouvoir ajouter mon animation a la place de mon tableauvignette (un autre fichier a part qui m'affiche une serie de vignette)
Merci.
Lonyc