IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Changer de JPanel par JMenu


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Par défaut Changer de JPanel par JMenu
    Bonjour,

    Par un Menu, je cherche à pourvoir changer de JPanel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Main {
    	public static void main(String[] args){       
    		Fenetre fen = new Fenetre();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class Fenetre extends JFrame {
    	private JMenuBar menuBar = new JMenuBar();
    	private JMenu M1 = new JMenu("Menu");
    	private JMenuItem M1_1 = new JMenuItem("Menu1");
    	private JMenuItem M1_2 = new JMenuItem("Menu2");
    	private JMenuItem M1_3 = new JMenuItem("Fermer");
    	public Fenetre(){
    		this.setTitle("Menu");
    		this.setSize(700, 700);
    		this.setResizable(false);
    		this.setUndecorated(false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		this.M1.add(M1_1);
    		this.M1.add(M1_2);
    		this.M1.addSeparator();
    		M1_3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {System.exit(0);}});
    		this.M1.add(M1_3);  
    		this.menuBar.add(M1);
    		this.setJMenuBar(menuBar);
    		this.setContentPane(new PanneauM1_1());
    		this.setVisible(true);
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class PanneauM1_1 extends JPanel { 
    	public void paintComponent(Graphics g){
    		Font font = new Font("Courier", Font.BOLD, 20);
    		g.setFont(font);
    		g.setColor(Color.blue);
    		g.drawString("Menu 1", 10, 20);
    	}               
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class PanneauM1_2 extends JPanel { 
    	public void paintComponent(Graphics g){
    		Font font = new Font("Courier", Font.BOLD, 20);
    		g.setFont(font);
    		g.setColor(Color.red);
    		g.drawString("Menu 2", 10, 20);
    	}               
    }
    Quand je clic sur Menu_1 je veux afficher le JPanel PanneauM1_1 et quand je clic sur Menu_2 je veux afficher le JPanel PanneauM1_2.

    Je suppose qu'il faut ajouter un addActionListener dans la class Fenetre, mais je ne comprend pas comment ...

    Si quelqu'un peut m'aider, par avance merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Par défaut
    J'ai essayé de modifier la class Fenetre comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class Fenetre extends JFrame {
    	private JMenuBar menuBar = new JMenuBar();
    	private JMenu M1 = new JMenu("Menu");
    	private JMenuItem M1_1 = new JMenuItem("Menu1");
    	private JMenuItem M1_2 = new JMenuItem("Menu2");
    	public Fenetre(){
    		this.setTitle("Menu");
    		this.setSize(700, 700);
    		this.setResizable(false);
    		this.setUndecorated(false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		M1_1.addActionListener((ActionListener) this);
    		this.M1.add(M1_1);
    		M1_2.addActionListener((ActionListener) this);
    		this.M1.add(M1_2); 
    		this.menuBar.add(M1);
    		this.setJMenuBar(menuBar);
    		this.setContentPane(new PanneauM1_1());
    		this.setVisible(true);
    	}
     
    	public void actionPerformed(ActionEvent e) { 
    		if(e.getSource() == M1_1) {
    			PanneauM1_1 panneau = new PanneauM1_1();
    			this.setContentPane(panneau);
    		}
    		if(e.getSource() == M1_2) {
    			PanneauM1_2 panneau = new PanneauM1_2();
    			this.setContentPane(panneau);
    		}
    	} 
    }
    Mais j'obtiens l'erreur :
    Exception in thread "main" java.lang.ClassCastException: Fenetre cannot be cast to java.awt.event.ActionListener
    at Fenetre.<init>(Fenetre.java:21)
    at Main.main(Main.java:4)

  3. #3
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Salut !

    Par un Menu, je cherche à pourvoir changer de JPanel.
    Est-ce qu'un jTabbedPane pourrait convenir ?
    http://docs.oracle.com/javase/tutori...abbedpane.html

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Par défaut
    Merci, mais cela ne correspond pas a ce que je veux faire.

    Après moulte recherche et tentative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class Fenetre extends JFrame {
    	private JMenuBar menuBar = new JMenuBar();
    	private JMenu M1 = new JMenu("Menu");
    	private JMenuItem M1_1 = new JMenuItem("Menu1");
    	private JMenuItem M1_2 = new JMenuItem("Menu2");
    	public Fenetre(){
    		this.setTitle("Menu");
    		this.setSize(700, 700);
    		this.setResizable(false);
    		this.setUndecorated(false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocationRelativeTo(null);		
    		M1_1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {
    			PanneauM1_1 panneau = new PanneauM1_1();
    			setContentPane(panneau);
    			revalidate();
    		}});
    		M1.add(M1_1);
    		M1_2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {
    			PanneauM1_2 panneau = new PanneauM1_2();
    			setContentPane(panneau);
    			revalidate();
    		}});
    		M1.add(M1_2); 
    		this.menuBar.add(M1);
    		this.setJMenuBar(menuBar);
    		this.setContentPane(new PanneauM1_1());
    		this.setVisible(true);
    	}
    }

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Sinon, un bon vieux CardLayout des familles aurait très bien fait l'affaire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tomcat] Changer le répertoire par défaut
    Par leminipouce dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 23/05/2005, 16h06
  2. Changer de JPanel en cours d'applications
    Par MrEddy dans le forum Composants
    Réponses: 3
    Dernier message: 12/05/2005, 17h22
  3. Changer le return par des "\\n"
    Par gandf dans le forum C++Builder
    Réponses: 8
    Dernier message: 20/01/2005, 11h04
  4. [2.1][Workspace]Changer le répertoire par défaut
    Par Pill_S dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 29/06/2004, 13h34
  5. Changer le thème par défaut
    Par Chance666 dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 26/09/2003, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo