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 Jean Canazzi . Évalué à 1.
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.