Fonction static si écrite dans main ??

Starter34 Messages postés 5 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 23 juillet 2010 - 23 juil. 2010 à 15:28
Starter34 Messages postés 5 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 23 juillet 2010 - 23 juil. 2010 à 16:19
Bonjour,

Je cherche un avis sur une situation que je ne comprends pas... En synthèse Eclipse me demande de modifier une méthode en static lorsque que je décide de la lancer depuis le main plutôt que depuis son constructeur

les détails:

J'ai une Visual Class héritant de JFrame qui contient le main de mon appli. Depuis ce dernier, un thread (runnable) instancie cette même JFrame appellant son constructeur...

ça donne:

public class GameSwing extends JFrame {
...
// le main...
...
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GameSwing thisClass = new GameSwing();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});

...
//le constructeur
...

public GameSwing() {
super();
initialize();
}

...


La fonction initialize() monte le conteneur et spécifie les caractéristques de la JFrame.


...

Depuis cette classe "GameSwing" je veux aussi instancier des objet d'autres classe Swing. Pour cela je créé la fonction "launchWindows()"

private void launchWindows() {

// on instancie les autres classes graphiques
///-------------------------------------------
/** celle destinée à récupere les donnés des participants*/
onePlayerDescription = new PlayerDescription(5);
onePlayerDescription.setLocationRelativeTo(null);
onePlayerDescription.setVisible(true);

/** la fenêtre destinée à saisir les données de la partie */
oneGameInputData = new GameInputData();
oneGameInputData.setLocationRelativeTo(null);
oneGameInputData.setVisible(true);


/** la fenêtre permettant d'imprimer les support de la partie */
oneMaterialPreparation = new MaterialPreparation();
oneMaterialPreparation.setVisible(true);
oneMaterialPreparation.setLocationRelativeTo(null);
}

Mon problem:

Si j'appelle cette fonction "launchWindows" depuis mon constructeur (aprés "initialize()") ben ça marche bien... par contre si je la lance depuis mon main (ce qui me semblerai plus logique) comme ça:

public static void main(String[] args) {
launchWindows();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GameSwing thisClass = new GameSwing();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});

}

Et bien l'IDE Eclipse me suggère de changer le type de la fonction "launchWindows" de public à static.

et pourquoi donc ? je vois pas la subtilité là...

Merci d'avance pour votre aide.

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 juil. 2010 à 15:49
Salut,

Tout simplement parce que tu appelle une fonction non static à partir d'une fonction static.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
Starter34 Messages postés 5 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 23 juillet 2010
23 juil. 2010 à 16:19
Merci Darksidious, vraiement.

Je laisserai donc tout en static puisque que la fonction dont il est question ne sera pas instanciée...

Merci!
0
Rejoignez-nous