Besoin d'aide

Résolu
zakpgm22 - 12 mai 2013 à 14:53
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 13 mai 2013 à 09:25
Bonjour, je suis débutant en java, j'ai récupérer un programme que j'ai modifier un peu et je voudrais y caser une action listener quand la fenetre se ferme à ce cette action : mais je sais pas où la mettre sans faire foirer le programme svp

this.addWindowListener(new WindowAdapter(){


public void windowClosing(WindowEvent e){
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.HOUR_OF_DAY)+"h "+cal.get(Calendar.MINUTE)+"m et "+cal.get(Calendar.SECOND)+"s "+ cal.get(Calendar.MILLISECOND)+"ms ");
//stockent l'heure de fermeture dans des variables
int h2 = cal.get(Calendar.HOUR_OF_DAY);
int m2 = cal.get(Calendar.MINUTE);
int s2 = cal.get(Calendar.SECOND);
int ms2 = cal.get(Calendar.MILLISECOND);
// Affiche la durée d'ouveture de la fenetre
System.out.println((h2-h1+"h ")+(m2-m1+"m ")+(s2-s1+"s ")+(ms2-ms1+"ms"));

à ce CODE }

package test3;



import java.util.Calendar;
import java.util.Scanner;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.text.LabelView;

import java
.awt.*
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class fenetre extends JFrame {

private static int minute =0,seconde=0,centiseconde=0;
/* Le timer */
int delais=9;
ActionListener tache_timer;

public fenetre () {

this.setTitle("Chronomètre"); //Titre
this.setSize(100,100); //Taille
this.setLocation(1200,200); //mettre au centre
JPanel Panel1 = new JPanel ();
this.setContentPane(new Panel1()); //remplacer par nom class du panel
final JLabel Label1 = new JLabel(minute+":"+seconde+":"+centiseconde);

this.setVisible( true); //fenetre visible

this.setResizable(false);



tache_timer= new ActionListener()
{ public void actionPerformed(ActionEvent e1)
{
centiseconde++;
if(centiseconde==100)
{
centiseconde=0;
seconde++;
}
if(seconde==60)
{
seconde=0;
minute++;
}

Label1.setText(minute+":"+seconde+":"+centiseconde);/* rafraichir le label */
} };
/* instanciation du timer */
final Timer timer1= new Timer(delais,tache_timer);
timer1.start();
Label1.setBorder(new EmptyBorder(0,240,0,40));
this.getContentPane().add(Panel1,"North");
this.getContentPane().add(Label1,"East");

//Afficher l'heure du système
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.HOUR_OF_DAY)+"h "+cal.get(Calendar.MINUTE)+"m et "+cal.get(Calendar.SECOND)+"s "+cal.get(Calendar.MILLISECOND)+"ms ");
// stockent l'heure à l'ouverture dans des variables
final int h1 = cal.get(Calendar.HOUR_OF_DAY);
final int m1 = cal.get(Calendar.MINUTE);
final int s1 = cal.get(Calendar.SECOND);
final int ms1 = cal.get(Calendar.MILLISECOND);

}


private void setContentPane(Panel1 panel1) {

// TODO Auto-generated method stub

}}

5 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 mai 2013 à 16:25
Salut,

Pour cela, il faut que tu ajoutes un WindowListener sur ta JFrame :
frame.addWindowListener(new WindowListener(){
   // Et ici réimplémentes la méthode windowClosing
})
3
Tout d'abord merci de ta réponse j'ai essayer comme ceci mais ça ne marche tjrs pas :/

package test3;


import java.util.Calendar;
import java.util.Scanner;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.text.LabelView;

import java
.awt.*
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class fenetre extends JFrame {

private static int minute=0,seconde=0,centiseconde=0;
/* Le timer */
int delais=9;
ActionListener tache_timer;

public fenetre () {

this.setTitle("Chronomètre"); //Titre
this.setSize(100,100); //Taille
this.setLocation(1200,200); //mettre au centre
JPanel Panel1 = new JPanel ();
this.setContentPane(new Panel1()); //remplacer par nom class du panel
final JLabel Label1 = new JLabel(minute+":"+seconde+":"+centiseconde);

this.setVisible( true); //fenetre visible

this.setResizable(false);



tache_timer= new ActionListener()
{ public void actionPerformed(ActionEvent e1)
{
centiseconde++;
if(centiseconde==100)
{
centiseconde=0;
seconde++;
}
if(seconde==60)
{
seconde=0;
minute++;
}

Label1.setText(minute+":"+seconde+":"+centiseconde);/* rafraichir le label */
} };
/* instanciation du timer */
final Timer timer1= new Timer(delais,tache_timer);
timer1.start();
Label1.setBorder(new EmptyBorder(0,240,0,40));
this.getContentPane().add(Panel1,"North");
this.getContentPane().add(Label1,"East");

//Afficher l'heure du système
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.HOUR_OF_DAY)+"h "+cal.get(Calendar.MINUTE)+"m et "+cal.get(Calendar.SECOND)+"s "+cal.get(Calendar.MILLISECOND)+"ms ");
// stockent l'heure à l'ouverture dans des variables
final int h1 = cal.get(Calendar.HOUR_OF_DAY);
final int m1 = cal.get(Calendar.MINUTE);
final int s1 = cal.get(Calendar.SECOND);
final int ms1 = cal.get(Calendar.MILLISECOND);

this.addWindowListener(new WindowListener(){
public void windowClosing(WindowEvent e){
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.HOUR_OF_DAY)+"h "+cal.get(Calendar.MINUTE)+"m et "+cal.get(Calendar.SECOND)+"s "+ cal.get(Calendar.MILLISECOND)+"ms ");
//stockent l'heure de fermeture dans des variables
int h2 = cal.get(Calendar.HOUR_OF_DAY);
int m2 = cal.get(Calendar.MINUTE);
int s2 = cal.get(Calendar.SECOND);
int ms2 = cal.get(Calendar.MILLISECOND);
// Affiche la durée d'ouveture de la fenetre
System.out.println((h2-h1+"h ")+(m2-m1+"m ")+(s2-s1+"s ")+(ms2-ms1+"ms"));



}


private void setContentPane(Panel1 panel1) {

// TODO Auto-generated method stub

}}
0
oula j'ai réussi avec de la bidouille encore de la bidouille, le pifaumètre est mon meilleur amis sur java je te remerci quand meme encore une fois :)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mai 2013 à 09:24
Tu auras déjà un problème de compilation étant donné que tu ne ré implémentes pas toutes les méthodes de l'interface.

Il faut tout réimplémenter même si certaines méthodes ne font rien :
http://docs.oracle.com/javase/6/docs/api/java/awt/event/WindowListener.html
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mai 2013 à 09:25
Tu n'utilises pas un IDE ? Il t'aurais corrigé l'erreur tout seul...

Je te conseil de télécharger éclipse.
0
Rejoignez-nous