Forum Programmation.java variable golbale et instance d'application (static)

Posté par  .
Étiquettes : aucune
0
8
juin
2007
Bonjour,

J'ai développé un programme sous java qui utilise une variable static dans une classe :

public class ModeEdition {


public static Mode mode;

static {
mode = Mode.DO_NOTHING;
}


public enum Mode {
DO_NOTHING,
ADD,
CHANGE,
REMOVE,
MOVE,
ROTATE,
RENUM,
ADD_ATOM_CHARGE,
REMOVE_ATOM_CHARGE,
CHANGE_RADICAL_R,
}


}
enum modeEdition


parce que toutes mes classes l'utiisent. par exemple
modeEdition.mode = Mode.ADD


Quand je lance plusieurs instances de mon aplication dans éclipse tout va bien.


j'ai rajouté une barre de menu avec un menu fichier / nouveau qui doit lancer une nouvelle instance de mon application, un peu comme quand on ouvre un document vierge avec word 2003,. donc quand je dans fichier / nouveau ça lance : Main.startApp

qui est écrite ainsi dnas mon main :
public static void startApp () {
Mesomery mesomery = new Mesomery();
FrameApp app = new FrameApp(mesomery);
ActionsApp actionsApp = new ActionsApp (mesomery, app);
app.setAppMenuBar(new AppMenuBar(actionsApp));
app.setVisible(true);
mesomery.reset();
}


Or l'application aini lancée utilise la même variable globale "mode" que l'autre , puisqu'en effet j'ouvre en réalité une nouvelle instnace de ma frame mais pas une nouvelle instance de mon application.


comment faire pour lancer une nouvelle instnace de mon appli comme si je la lançais plusieurs fois par éclipse ?
  • # Erreur de design ?

    Posté par  . Évalué à 1.

    A mon humble avis, relancer l'appli toute entière quand on fait "new document" ne constitue pas une très belle solution. Examinons plutôt ton cas :

    Comme tu le dis si bien, une variable static est globale à l'application ; or d'un point de vue design, "ModeEdition.Mode" n'est pas globale puisque tu la veux liée à un document en particulier.

    Il te faut ici faire un choix :
    _ soit le mode d'édition courant est partagé entre tous les documents, et "ModeEdition.mode" peut rester static.
    _ soit chaque document possède son propre mode d'édition, auquel cas il faut mettre la variable "mode" ailleur (dans ta classe Document ?) ; dans tout les cas elle ne sera plus static.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.