Bonjour,
Etant nouveau dans la programmation orienté objet, je demande votre aide pour m’éclairer sur une notion. Il m’est demandé de créé une interface graphique, j’ai choisi d’utiliser les objets de la librairie SWING.
J’ai réussi à créer ma première fenêtre avec les éléments demandés : une barre menue avec deux menus. Dans mon deuxième menu « Charts » dans le sous-menu « y = F(x) » quand je clic dessus j’aimerai faire apparaitre ma deuxième fenêtre et rendre invisible la première. Je veux faire ceci avec la méthode action via ma la classe NaviguerAction.java mais le problème c’est que je ne peux pas accéder à mes objets fenêtre1 et fenêtre2 définit dans mon main.
J’ai encore du mal avec la manipulation et le formalisme JAVA, je vais essayer d’illustrer mes propos avec mon code source :
Dans ma classe MaClasseMain (mon main) je crée mes deux objets fenetre1 et fenetre2 qui instancie la même classe Fenêtre
1 2 3 4 5 6 7 8 9 10 11 12
|
package monpackage.firsttry;
public class MaClasseMain {
public static void main(String[] args) {
Fenetre fenetre1 = new Fenetre("See File",800, 550);
Fenetre fenetre2 = new Fenetre("Fonction", 600, 350);
fenetre1.setVisible(true);
fenetre2.setVisible(false);
//Ajout de la barre menue
fenetre1.ajoutMenu();
}
} |
Voici le code de ma classe Fenêtre
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
package monpackage.firsttry;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Fenetre extends JFrame {
public Fenetre(String nom, int largeur, int hauteur){
//On lui définit un titre
this.setTitle(nom);
//On définit sa taille : 400 pixels de large et 100 pixels de haut
this.setSize(largeur, hauteur);
//On positionne notre objet au centre
this.setLocationRelativeTo(null);
//Termine le processus lorsqu'on clique sur la croix rouge
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Empeche le redimensionnement
this.setResizable(false);
this.setResizable(false);
//Fenetre toujours au premier plan
this.setAlwaysOnTop(true);
this.setAlwaysOnTop(true);
}
public void ajoutMenu() {
//Instanciation d'un objet JMenuBar
JMenuBar barmenu = new JMenuBar();
//On prévient notre JFrame que notre MenuBar sera son MenuBar
this.setJMenuBar(barmenu);
//Instanciation d'un objet JMenu - menu 1
JMenu menu1 = new JMenu();
barmenu.add(menu1);
menu1.setText("File");
//Instanciation d'un objet JMenu - menu 2
JMenu menu2 = new JMenu();
barmenu.add(menu2);
menu2.setText("Charts");
//Instanciation d'un objet JMenuItem - sousmenu 1
//1ier
JMenuItem sousmenu11 = new JMenuItem();
menu1.add(sousmenu11);
sousmenu11.setText("open");
//2ième
JMenuItem sousmenu12 = new JMenuItem();
menu1.add(sousmenu12);
sousmenu12.setText("save");
//3ième
JMenuItem sousmenu13 = new JMenuItem();
menu1.add(sousmenu13);
sousmenu13.setText("saveas");
//4ieme
JMenuItem sousmenu14 = new JMenuItem(new QuitterAction("Quitter"));
menu1.add(sousmenu14);
sousmenu14.setText("exit");
//Instanciation d'un objet JMenuItem - sousmenu 2
//1ier
JMenuItem sousmenu21 = new JMenuItem(new NaviguerAction("Naviguer"));
menu2.add(sousmenu21);
sousmenu21.setText("y = F(x)");
}
} |
Je mets en gras la partie où j’appelle ma classe NaviguerAction pour pouvoir capturer le clic.
Et je finis pour le code de ma classe NaviguerAction
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
package monpackage.firsttry;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
public class NaviguerAction extends AbstractAction {
public NaviguerAction(String texte){
super(texte);
}
public void actionPerformed(ActionEvent e){
//fenetre1.setVisible(false);
//fenetre2.setVisible(true);
//Je ne peux pas accéder à mes objets fenetre 1 et fenetre 2 pour faire basculer l'affichage des fenêtres
}
} |
C’est ça que j’ai du mal à comprendre, en JAVA, c’est comme faire pour accéder à mes objets depuis une autre classe ?
J’espère être asses claire dans mes explications n’hésitez pas à me poser des questions pour mieux comprendre.
Partager