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

 Java Discussion :

Partage d'ActionEvent entre deux JPanel


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Par défaut Partage d'ActionEvent entre deux JPanel
    Bonjour,

    J'ai une interface avec 4 JPanel.

    -JPanel_Parent
    qui appelle
    • JPanel_Left
    • Jpanel_Right
    • JPanel_Center


    Indépendamment, les 4 panels fonctionnent bien. J'arrive à capter les ActionEvent sans soucis. Par contre, j'aimerais pouvoir remonter les ActionEvent des classes (JPanel_{Left,Right,Center}) à la classe JPanel_Parent pour pouvoir tout traiter dans cette classe.

    Inversement, j'aimerais pouvoir passer les ActionEvent entre les classes {Left, Right, Center}. Par exemple, sélectionne du texte dans l'un des Panel et le faire apparaître dans un autre.

    J'imagine que c'est juste une question de faire passer les références entre Panel. Après recherche, je n'ai rien trouvé de convainquant. Du coup, je me tourne vers vous, la communauté Java.

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    tu peux implémenter actionListener dans ton JPanel1 et pour tes autres panels faire des panel2.addActionListener(panel1); ...etc.

    Il faudra alors passer en paramètre des constructeur des panels 2 à 4 le panel1.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Par défaut
    Bonjour,

    Merci pour la réponse, cependant, cela ne marche pas comme je le voudrais. Ca me sort des erreurs.

    J'aimerais récupérer les actions de JButton b1 et JButton b3 dans JPanel_Parent. Pour être un peu plus explicite, je joins le code.

    Voici le code de JPanel_Parent :
    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
    34
    public class MIG_JPanel_Parent extends JPanel implements ActionListener {
     
        JButton b1;
        JButton b3;
     
    	protected JLabel actionLabel;
     
    	public MIG_JPanel_Parent() {
    		setLayout(new GridLayout(1,3));
     
    		MIG_JPanel_Left leftPane = new MIG_JPanel_Left();
    		MIG_JPanel_Center centerPane = new MIG_JPanel_Center();
    		MIG_JPanel_Right rightPane = new MIG_JPanel_Right();
     
     
    		add(leftPane, BorderLayout.LINE_START);
    		add(centerPane, BorderLayout.LINE_END);
    		add(rightPane);
    	}
     
     
    	public void actionPerformed(ActionEvent e) {
    		System.out.println("Test");
    		if ("disable".equals(e.getActionCommand())) {
    			b1.setEnabled(false);
    			b3.setEnabled(true);
    		} else {
    			b1.setEnabled(true);
    			b3.setEnabled(false);
    		}
     
    	}	
     
    }
    Et le code de JPanel_Right
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    public class MIG_JPanel_Right extends JPanel implements ActionListener {
     
    	public JButton b1;
    	public JButton b3;
     
    	public MIG_JPanel_Right() {
    //		this.b1=b1;
    //		this.b3=b3;
    		/*
    		 * Rigth
    		 */
    		// JPanel rightPane = new JPanel(new GridLayout(0, 1));
    		this.setLayout(new GridLayout(0, 1));
     
     
    ImageIcon leftButtonIcon = new ImageIcon("images/left.gif");
    		ImageIcon rightButtonIcon = new ImageIcon("images/right.gif");
     
    		b1 = new JButton("SE précédente", leftButtonIcon);
    		b1.setVerticalTextPosition(AbstractButton.CENTER);
    		b1.setHorizontalTextPosition(AbstractButton.RIGHT); // aka LEFT, for
    		b1.setMnemonic(KeyEvent.VK_D);
    		b1.setActionCommand("disable");
     
    		b3 = new JButton("SE suivante", rightButtonIcon);
    		// Use the default text position of CENTER, TRAILING (RIGHT).
    		b3.setHorizontalTextPosition(AbstractButton.LEFT);
    		b3.setMnemonic(KeyEvent.VK_E);
    		b3.setActionCommand("enable");
    		b3.setEnabled(false);
     
    		// Listen for actions on buttons 1 and 3.
    		b1.addActionListener(this);
    		b3.addActionListener(this);
     
    		b1.setToolTipText("Retourner à la SE précédente.");
    		b3.setToolTipText("Avancer à la SE suivante.");
     
    		// Add Components to this container, using the default FlowLayout.
    		JPanel buttonPanel = new JPanel();
    		buttonPanel.add(b1);
    		buttonPanel.add(b3);
     
    		this.add(buttonPanel);
     
    }
    En gros, comment puis-je "commander" JButton b1 et JButton b2 depuis JPanel_Parent?

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Voici ton code modifié.

    comme tu le verra la seule classe qui implémente ActionListener est le panel parent et tu donne ce panel en parametre des autre panels

    classe MIG_JPanel_Parent

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
     
    public class MIG_JPanel_Parent extends JPanel implements ActionListener {
     
    	//MIG_JPanel_Left leftPane = new MIG_JPanel_Left();
    	//MIG_JPanel_Center centerPane = new MIG_JPanel_Center();
    	MIG_JPanel_Right rightPane = new MIG_JPanel_Right(this);	
     
     
        public MIG_JPanel_Parent() {
    		setLayout(new GridLayout(1,3));
    		//add(leftPane, BorderLayout.LINE_START);
    		//add(centerPane, BorderLayout.LINE_END);
    		add(rightPane);
        }
     
     
        public void actionPerformed(ActionEvent e) {
    	System.out.println("Test");
    	if (e.getSource().equals(rightPane.b1)) {
    		rightPane.b1.setEnabled(false);
    		rightPane.b3.setEnabled(true);
    	} 
    	else if (e.getSource().equals(rightPane.b3)){
    		rightPane.b1.setEnabled(true);
    		rightPane.b3.setEnabled(false);
    	}
    	/*else if (e.getSource().equals(leftPane.b4)){
    		leftPane.b4.setEnabled(false);
    		leftPane.b5.setEnabled(true);
    	}
    	else if (e.getSource().equals(leftPane.b5)){
    		leftPane.b4.setEnabled(true);
    		leftPane.b5.setEnabled(false);
    	}
    	pareil pour centerPane
    	*/
        }	
     
        public static void main(String[] args) {
    		JFrame f = new JFrame();
    		f.setSize(500,500);
    		MIG_JPanel_Parent mig = new MIG_JPanel_Parent();
    		f.add(mig);
    		f.setVisible(true);
        }
     
    }
    classe MIG_JPanel_Right

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class MIG_JPanel_Right extends JPanel {
     
    	public JButton b1;
    	public JButton b3;
    	MIG_JPanel_Parent mig;
     
    	public MIG_JPanel_Right(MIG_JPanel_Parent mig) {
     
    		this.mig = mig;
    		this.setLayout(new GridLayout(0, 1));
     
     
    		//ImageIcon leftButtonIcon = new ImageIcon("images/left.gif");
    		//ImageIcon rightButtonIcon = new ImageIcon("images/right.gif");
     
    		b1 = new JButton("SE précédente");//, leftButtonIcon);
    		b1.setVerticalTextPosition(AbstractButton.CENTER);
    		b1.setHorizontalTextPosition(AbstractButton.RIGHT); // aka LEFT, for
    		b1.setMnemonic(KeyEvent.VK_D);
    		b1.setActionCommand("disable");
     
    		b3 = new JButton("SE suivante");//, rightButtonIcon);
    		// Use the default text position of CENTER, TRAILING (RIGHT).
    		b3.setHorizontalTextPosition(AbstractButton.LEFT);
    		b3.setMnemonic(KeyEvent.VK_E);
    		b3.setActionCommand("enable");
    		b3.setEnabled(false);
     
    		// Listen for actions on buttons 1 and 3.
    		b1.addActionListener(mig);
    		b3.addActionListener(mig);
     
    		b1.setToolTipText("Retourner à la SE précédente.");
    		b3.setToolTipText("Avancer à la SE suivante.");
     
    		// Add Components to this container, using the default FlowLayout.
    		JPanel buttonPanel = new JPanel();
    		buttonPanel.add(b1);
    		buttonPanel.add(b3);
     
    		this.add(buttonPanel);
    	}
     
    }

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Par défaut Ca tourne
    En effet, ça tourne. Merci

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

Discussions similaires

  1. Partage de variable entre deux forms
    Par PtitGénie dans le forum C++
    Réponses: 2
    Dernier message: 16/12/2007, 18h56
  2. Comment partager une table entre deux formviews?
    Par dachir dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/11/2007, 11h02
  3. Réponses: 1
    Dernier message: 31/01/2007, 10h00
  4. Réponses: 3
    Dernier message: 05/07/2006, 11h59
  5. [WebLogic]Partager un bean entre deux applis web
    Par fatboyslim75 dans le forum Weblogic
    Réponses: 2
    Dernier message: 12/12/2005, 19h22

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