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 panel quand appuie sur bouton


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Points : 85
    Points
    85
    Par défaut changer de panel quand appuie sur bouton
    Bonjour,

    Ca fait un certain temps que je recherche et là je bloque.
    En résumé, mon void doit créer ma fenêtre et mon panel 1 (panel insérer dans ma fenetre).

    Dans ce panel, il y a un bouton qui doit faire changer le panel (panel1 doit devenir Panel2).
    Puis un bouton dans mon panel 2 qui doit refaire changer panel: panel2 en panel 1.

    Est-ce que c'est une bonne idée pour gérer la navigation entre les différentes pages de mon "logiciel"?

    voici mon code

    Mon void:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Formulaire{
       public static void main(String[] args) {
          MaFrame fenetre=new MaFrame();
          Panel1 p=new Panel1();
          JPanel panel=p.creaPanel1(fenetre);
          fenetre.changerPanel("coucou",200,200,panel);
     
     
       }
    }
    J'ai ma classe MaFrame:
    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
    public class MaFrame extends JFrame {
     
       public MaFrame() {
          super();
          acceuil=new Panel1();
          client=new Panel2();
          setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
          setResizable(true); //On interdit la redimensionnement de la fenêtre
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
          setVisible(true);
       }
     
       public void changerPanel(String titre,int x,int y,JPanel panel){
               setTitle(titre); //On donne un titre à l'application
               setSize(x,y); //On donne une taille à notre fenêtre
               setContentPane(panel);
     
       }
    }
    ma classe Panel1:
    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
    public class Panel1 extends JPanel{
      MaFrame fenetre;
     
      public JPanel creaPanel1(MaFrame fenetre){
        this.fenetre=fenetre;
        JPanel panel=new JPanel();
          panel.setLayout(new FlowLayout());
          panel.setBackground(Color.white);
     
          JComboBox liste = new JComboBox ();
                    liste.setMaximumRowCount(5);
                    liste.setBounds (550, 120,150,30);
                    liste.setBackground(Color.WHITE);
          panel.add (liste);
     
          try {
               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
               Connection con=DriverManager.getConnection("jdbc:odbc:busnessplan");
               Statement stmt = con.createStatement();
     
               String sql="select distinct denomination from Clients";
               ResultSet rst=stmt.executeQuery(sql);
               liste.removeAllItems();
               while(rst.next())
               {
                liste.addItem(rst.getString("denomination"));
                }
            } catch(Exception se) {
                System.out.println("erreur commise est: "+se);
            }
     
            panel.add(liste);
            JButton bouton = new JButton(new Action(this, "Nouveau Client",fenetre));
     
            panel.add(bouton);
            return panel;
     
      }
     
    }
    ma classe Action:
    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
    public class Action extends AbstractAction {
    	private Panel1 panel;
    	private MaFrame frame;
     
    	public Action(Panel1 panel, String texte,MaFrame frame){
    		super(texte);
     
    		this.panel = panel;
    		this.frame=frame;
    	}
     
    	public void actionPerformed(ActionEvent e) {
    				Panel2 pane=new Panel2();
    				JPanel panel2=pane.creaPanel2(frame);
    				frame.changerPanel("CREATION CLIENT",200,200,panel2);
     
    	}
    }
    ma classe Panel2:

    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
    public class Panel2 extends JPanel{
      MaFrame fenetre;
     
      public JPanel creaPanel2(MaFrame fenetre){
        this.fenetre=fenetre;
        JPanel panel=new JPanel();
        //Déclaration des composants
    //Label
        JLabel lbDenomination = new JLabel("Dénomination:");
     
    //Zone de saisie: JTextField
        JTextField tfDenomination = new JTextField("");
     
    //Bouton
        JButton btValider=new JButton(new ActionBis(this,"Valider",fenetre));
        GridBagLayout gb = new GridBagLayout();
        GridBagConstraints gbc = new GridBagConstraints();
        GridBagConstraints gbh=new GridBagConstraints();
     
        panel.setLayout(gb);
     
          gbc.fill = GridBagConstraints.BOTH;
          gbc.weightx = 1;
          gbc.weighty = 1;
          gbc.gridx=1;
     
          gbc.fill = GridBagConstraints.BOTH;
          gbc.weightx = 1;
          gbc.weighty = 1;
     
          gb.setConstraints(lbDenomination, gbc); // mise en forme des objets
          gb.setConstraints(tfDenomination, gbh);
          gb.setConstraints(btValider, gbc);
     
          panel.add(lbDenomination);
          panel.add(tfDenomination);
          panel.add(btValider);
     
          return panel;
      }
     
    }
    et enfin ma classe ActionBis:
    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
    public class ActionBis extends AbstractAction {
    	private Panel2 panel;
    	private MaFrame frame;
     
    	public ActionBis(Panel2 panel, String texte,MaFrame frame){
    		super(texte);
     
    		this.panel = panel;
    		this.frame=frame;
    	}
     
    	public void actionPerformed(ActionEvent e) {
                   Panel1 p=new Panel1();
                   JPanel panel=p.creaPanel1(frame);
                   frame.changerPanel("coucou",200,200,panel);
     
    	}
    }
    Désolée de mettre tout le code mais à un moment ça a marché puis maintenant, pas de pb à la compile mais j'ai comme résultat ma fenetre avec pour titre "coucou" mais rien à l'interieur

    merci beaucoup pour votre aide
    claire

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, j'ai l'impression que le CardLayout est tout à fait indiqué pour ce que tu veux faire. Il permet de déclarer plusieurs panel superposés et d'en afficher un seul. (par exemple avec des onglets)

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Points : 85
    Points
    85
    Par défaut
    merci pour votre réponse

    Je vais essayer

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Points : 85
    Points
    85
    Par défaut
    reBonjours,

    J'ai essayé de faire le cardLayout mais j'ai un "petit soucis":

    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
    class Panneau extends JPanel implements ActionListener
    {
     
      Panneau()
     
      {
        setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
        add(liste);
        add(bouton);
        bouton.addActionListener(this);
        setBackground(Color.cyan);
     
      }
        JButton bouton = new JButton("Nouveau Client");
        JComboBox liste = new JComboBox ();
                    liste.setMaximumRowCount(5);
                    liste.setBounds (550, 120,150,30);
                    liste.setBackground(Color.WHITE);
                    panel.add (liste);
     
          try {
               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
               Connection con=DriverManager.getConnection("jdbc:odbc:busnessplan");
               Statement stmt = con.createStatement();
     
               String sql="select distinct denomination from Clients";
               ResultSet rst=stmt.executeQuery(sql);
               liste.removeAllItems();
               while(rst.next())
               {
                liste.addItem(rst.getString("denomination"));
                }
            } catch(Exception se) {
                System.out.println("erreur commise est: "+se);
            }
     
     
      public void actionPerformed(ActionEvent e)
      {
        if (e.getSource()==bouton) System.out.println("salut");
     
      }
    }
    et voici une des erreurs qui est affiché:
    illegal start of type: liste.setMaximumRowCount(5).
    et j'ai 45 erreurs qui doivent être du à "une" faute de syntaxe.
    merci
    claire

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ton code n'est pas dans une méthode !

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Points : 85
    Points
    85
    Par défaut


    là j'ai honte!!!
    merci beaucoup

    je vais enfin pouvoir continuer.

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

Discussions similaires

  1. Changer de panel quand on clique sur un bouton
    Par doons dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 21/11/2007, 09h44
  2. sauvegarde liant des données par appui sur bouton
    Par Flavien44 dans le forum IHM
    Réponses: 2
    Dernier message: 11/06/2007, 18h20
  3. Réponses: 4
    Dernier message: 07/01/2007, 22h18
  4. Réponses: 13
    Dernier message: 18/07/2006, 15h07
  5. Réponses: 1
    Dernier message: 05/07/2006, 08h34

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