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

Agents de placement/Fenêtres Java Discussion :

connection entre deux jpanel d'un même JSplitPane a l 'aide de Jbutton


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut connection entre deux jpanel d'un même JSplitPane a l 'aide de Jbutton
    Bonjour,

    Je cherche a partir d un JSplitPane qui contient deux jpanel
    a faire changer le contenue de mon jpanel droit suivant le bouton
    que l'on a cliquer dans le panel gauche qui lui est fixe.
    j ai une classe principal
    qui contient
    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
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class derby 
    {
    	JFrame MonFrame = new JFrame ();
    	public derby ()
    	{
     
     
    		Panel PanelGauche = new Panel("GauchePrincipal");
    		PanelGauche.setLayout(null);
     
    		Panel PanelDroit = new Panel("PanelDroit");
    		PanelGauche.setLayout(null);
    		//Ici j'ai un problème pour le panel droit
     
    		JSplitPane SP = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
    		SP.add(PanelGauche);
    		SP.add(PanelDroit);
    		SP.setDividerLocation(200);
    		MonFrame.add(SP);
    		MonFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    		MonFrame.setVisible(true);
    	}
    	public static void main(String args[])
        {
            new derby();
        }
     
    }
    je veux que mon paneldroit
    soit different suivant sur quel bouton on a cliquer dans le panelgauche

    details de ma class panel
    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
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class Panel extends JPanel{
     
    	String NomPanel;
     
     
     
     public Panel (String NomPanel)
     {
    	if (NomPanel.equals("GauchePrincipal"))
        {
     
    	Bouton BoutonConsulter = new Bouton ("Consulter");
    	this.setLayout(null);
    	this.add(BoutonConsulter);
     
     
    	Bouton BoutonModifier = new Bouton ("Modifier");
    	this.setLayout(null);
    	this.add(BoutonModifier);	
     
    	if (NomPanel.equals("PanelDroit"))
        {   // problème avec le panel droit 
     
    		 Bouton BoutonDroitConsulterOK = new Bouton ("OK");
    		 this.setLayout(null);
    		 this.add (BoutonDroitConsulterOK);
        }
     
        }
    }
    }
    class button

    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
     
    import javax.swing.*;
    import java.awt.*;
     
    import java.awt.event.*; 
     
     
    public class Bouton extends JButton
    {
     
    	String NomBouton;
     
    	public Bouton(String NomBouton)
    	{
     
    		if (NomBouton.equals("Consulter"))
    		{
    		this.setBounds(50, 100, 100, 40);
    		this.setText("Consulter");
    		this.addActionListener (new MonListener());
    		}
     
    		if (NomBouton.equals("Modifier"))
    		{
    		this.setBounds(50, 200, 100, 40);
    		this.setText("Modifier");
    		this.addActionListener (new MonListener());
    		}
     
    		if (NomBouton.equals("ConsulterOK"))
    		{
     
    		this.setBounds(100, 250, 100, 40);
    		this.setText("OK");
    		this.addActionListener (new MonListener());
    		//Je n'arrive pas à l'afficher sur le panel Droit 
    		}
     
    		if (NomBouton.equals("ModifierOK"))
    		{
     
    		this.setBounds(100, 150, 100, 40);
    		this.setText("OK");
    		this.addActionListener (new MonListener());
    		//Je n'arrive pas non plus à l'afficher sur le panel droit
    		}
    	}
    }
    Ce que je veut c' est que l'on voit le bouton ConsulterOK
    dans le panel droit quand on clique sur sur Le bouton Consulter
    du panel gauche et le bouton MofifierOK dans le panel droit
    quand on clique sur le bouton Modifier du panel gauche aussi

    Ici
    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
     
    import java.util.EventListener;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
     
    public class MonListener implements ActionListener { 
    	public void actionPerformed(ActionEvent evt) {
     
    	if(evt.getActionCommand().equals("Consulter"))
        {
     
    		Bouton BoutonConsulterOK = new Bouton ("ConsulterOK");
    }
     
    	if(evt.getActionCommand().equals("Modifier"))
        {
         Bouton BoutonModifierOK = new Bouton ("ModifierOK"); 		
    	}
    }

  2. #2
    Membre à l'essai Avatar de BenMitnicK
    Homme Profil pro
    Electricien d'Equipement Domestique et tertaire + Ingé en info
    Inscrit en
    avril 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Electricien d'Equipement Domestique et tertaire + Ingé en info

    Informations forums :
    Inscription : avril 2022
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    slt

    Pour tes boutons il faut utiliser setVisible() exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ConsulterOK.setVisible(true); //Pour l'afficher
    ConsulterOK.setVisible(false); //Pour l'enlever
    ces codes sont a mettre quand tu clic sur tes boutons de Gauche

    Ensuite cela ne suffit pas il faut dire au programme qu'il y a du changement et pour ce faire on utilise Repaint() et Revalidate()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PanelDroit.Revalidate();
    PanelDroit.Repaint();
    ces codes sont a mettre quand tu clic sur tes boutons de Gauche

  3. #3
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    mai 2020
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : mai 2020
    Messages : 246
    Points : 319
    Points
    319
    Par défaut
    repaint() et revalidate() sont très efficaces mais sont souvent une preuve que les choses sont faites au mauvais moment.

    Pourquoi ne pas utiliser un JTabbedPane qui se charge d'afficher l'un ou l'autre panel en fonction de l'onglet sélectionné ? Si vous voulez faire le même genre de choses pour le plaisir alors le mieux est d'utiliser le CardLayout qui vous permet d'ajouter plusieurs composants mais de n'en afficher qu'un seul à la fois.

    Quand on veut que des composants soient différents, il est préférable de créer des composants différents. C'est plus clair dans votre code, une vue dans la structure du projet identifie les composants et le code révèle l'intention.

    Dans votre cas, il faudrait que GauchePrincipal ne soit qu'une liste de boutons sur lesquels sont attachées des actions/listeners. Ces actions se chargent d'afficher l'un ou l'autre panel sur la droite soit en modifiant le contenu de votre JSplitPane soit en jouant avec le CardLayout. Dans votre code, celà pourrait ressembler à ceci:

    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
     
    // Tout ceci est simplifié et ne compile pas, ça n'est que pour donner une idée
    class MenuPane extends JPanel {
       public void add(Action action) {
         add(new JButton(action));
       }
    }
     
    class RightPane extends JPanel {
      setLayout(new CardLayout());
     
      public void show(PaneId paneId) {
         CardLayout cards = (CardLayout) getLayout();
         cards.show(this, panedId.toString);
      }
    }
     
    class MainPanel extends JSplitPane {
     
      MenuPane menu;
      RightPane right;
     
      super(JSplitPane.VERTICAL, menu, right);
     
      menu.add(new ShowPaneAction("Panneau 1", PaneId.PANE_1));
      menu.add(new ShowPaneAction("Panneau 2", PaneId.PANE_2));
     
      class ShowPaneAction extends AbstractAction {
        PaneId paneId;
        onActionPerformed(ActionEvent e) {
          right.show(paneId);
        }
      }
     
    }

Discussions similaires

  1. Vpn entre deux réseaux locaux de même plage d'adresses
    Par boubajazz dans le forum Réseau
    Réponses: 5
    Dernier message: 09/04/2008, 09h30
  2. J'ai un problème de connection entre deux pc
    Par The_Haunted dans le forum Hardware
    Réponses: 15
    Dernier message: 08/02/2007, 20h10
  3. Réponses: 7
    Dernier message: 13/12/2006, 12h57
  4. Réponses: 2
    Dernier message: 09/06/2006, 19h34
  5. [Reseau] Connection entre deux XP via LAN
    Par scifire dans le forum Windows XP
    Réponses: 1
    Dernier message: 11/02/2006, 00h39

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