[JAVA] Probleme avec les fonctions statiques

Probleme avec les fonctions statiques [JAVA] - Programmation

Marsh Posté le 04-03-2001 à 01:05:43    

Voila j'ai mon application graphique dont la classe principale herite de JFrame.
Dans cette classe, j'ai defini des fonctions statiques (enfin Visual Café plutot)  
Une pour le main(), pour exitApplication(),etc.
 
Le probleme, c'est que quand je veux utiliser 'this' a l'interieur de ces fonctions, le complilateur me dit que la variable n'est pas definie.
 
Quelqu'un saurait-il comment resoudre le probleme?

Reply

Marsh Posté le 04-03-2001 à 01:05:43   

Reply

Marsh Posté le 04-03-2001 à 01:14:05    

Il a raison. Y a pas de this pour une fonction statique.
Qu'est ce que tu veux faire avec this ?
Pourquoi utilises tu une fonction statique ?

 

--Message édité par Verdoux--

Reply

Marsh Posté le 04-03-2001 à 01:24:10    

En fait je voudrais que ces fonctions soient accessibles par d'autres classes dans mon projet. Les mettre en static m'a paru etre la seule solution. S'il y en a une autre, je suis tout ouies.
 
j'ai par exemple besoin de ma fonction exitApplication dont le code est le suivant:
 
public void exitApplication()
 {
  try {
      // Beep
      Toolkit.getDefaultToolkit().beep();
      // Show a confirmation dialog
      int reply = JOptionPane.showConfirmDialog(this,  
                                                "Do you really want to exit?",  
                                                "Nuera CallFlow Studio 1.0 - Exit" ,  
                                                JOptionPane.YES_NO_OPTION,  
                                                JOptionPane.QUESTION_MESSAGE);
   // If the confirmation was affirmative, handle exiting.
   if (reply == JOptionPane.YES_OPTION)
   {
       this.setVisible(false);    // hide the Frame
       this.dispose();            // free the system resources
       System.exit(0);            // close the application
       
   }
  } catch (Exception e) {
  }
 }
 
Et j'ai donc besoin de 'this' pour afficher la boite de dialogue.
Voila en gros mon probleme.
 
Merci en tout cas.

Reply

Marsh Posté le 04-03-2001 à 01:26:25    

euh j'ai enlevé le 'static' au debut de la declaration paske je suis en train d'essayer de debugger.
Donc normalment y'a un 'static' devant :
 
static public exitApplication()

Reply

Marsh Posté le 04-03-2001 à 03:41:08    

Une méthode statique est par définition une méthode de classe, donc une méthode que l'on n'a pas appliqué à une instance. Donc pas de this.
 
Corollaire : Si tu as besoin de this à l'intérieur de cette méthode, elle ne peut pas être statique.
 
Donc ses appelants auront besoin d'une instance pour pouvoir appeler cette méthode.
 
Ce qui veut dire que, si j'ai bien compris, il va falloir que tu stockes quelque part l'objet Frame courant, pour ces autres classes puissent l'utiliser pour invoquer la méthode (non-statique) exitApplication().
 
Suis-je clair? (si je pose la question, c'est que j'ai un doute... :D )

Reply

Marsh Posté le 04-03-2001 à 04:56:32    

Oui je vois
Ok merci encore.

Reply

Sujets relatifs:

Leave a Replay

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