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

Interfaces Graphiques en Java Discussion :

Pb de retour entre frame


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Par défaut Pb de retour entre frame
    Salut à tous,

    Voilà j'essaie de faire un programme java qui 'saute' d'une frame à l'autre, mais sur chaque nouvelle frame ouverte je crée un bouton retour pour revenir sur une frame antérieure.
    Je pensais réussir tout ca facilement, mais mon petit problème débarque lorsque je le teste, bon les boutons et l'ouverture des frames se fonctionne parfaitement, mais cela seulement une seule fois. Je m'explique, une fois le programme lançait de ma première frame je clique sur le bouton qui m'envoie vers la seconde (en l'ouvrant et en 'disposant' de la première frame). Une fois sur la seconde je clique sur mon retour (idem ouverture de la première frame et dispose de la seconde). Jusque la tout fonctionne parfaitement. Mais si je réitère directement la même manœuvre voila t y pas qu'en plus de réaliser tout ca une fenetre suplementaire est créée... POURQUOI donc ? mais aussi comment régler ca ?

    Si quelqu'un peu aider un pauvre bougre qui ne sait plus quoi faire pour régler cette incompréhension..

    J'utilise eclipse et voila une partie du code :

    Première frame :

    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
    public class essai extends JFrame{
    	JFrame contour = new JFrame();
    	static JPanel container = new JPanel();
     
    	JButton base = new JButton("Edition");
     
    	public essai(){
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		Toolkit outil = getToolkit();
    		contour.setSize(outil.getScreenSize()); 
    		container.add(base);
    		base.addActionListener(new ecouteurBase());
     
    		contour.getContentPane().add(container, BorderLayout.CENTER);
    		contour.setVisible(true);
    	}
    	class ecouteurBase implements ActionListener{
    		public void actionPerformed (ActionEvent arg0){
    			container.removeAll();
    			contour.dispose();
    			new fenetreMenu();
     
    		}
    	}
    }
    Deuxième frame :

    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 fenetreMenu extends JFrame{
    	JFrame contour = new JFrame();
    	static JPanel container = new JPanel();
    	static JPanel container2 = new JPanel();
    	JSplitPane split = new JSplitPane();
     
    	public fenetreMenu(){
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		Toolkit outil = getToolkit();
    		contour.setSize(outil.getScreenSize()); 
     
    		new fenetreMenu3();
    		fenetreMenu3.base.addActionListener(new ecouteurBase());
     
            new fenetreMenu2();
     
            split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, container, container2);
            split.setDividerLocation(650);
    		contour.getContentPane().add(split, BorderLayout.CENTER);
    		contour.setVisible(true);
    	}
    	class ecouteurBase implements ActionListener{
    		public void actionPerformed (ActionEvent arg0){
    			container2.removeAll();
    			essai.container.removeAll();
    			contour.dispose();
    			new essai();
     
     
    			container.setBackground(Color.GREEN);		
    		}
    	}
    }

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par mandrake_at Voir le message
    Voilà j'essaie de faire un programme java qui 'saute' d'une frame à l'autre, mais sur chaque nouvelle frame ouverte je crée un bouton retour pour revenir sur une frame antérieure.
    Déja c'est assez bizarre en terme d'ergonomie d'utiliser des frames pour faire ça. D'après ce que tu décris, une JDialog avec un CardLayout contenant les différents panels me parait plus approprié.

    Fred

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Par défaut
    Salut et merci a toi pour ta réponse,

    Je n'ai pas compris les possibilités du cardlayout mais effectivement c'est très bien pour ce que je cherche à faire. Le problème que je rencontre c'est que dans un panel de mon cardlayout je dois afficher un nombre variable de boutons. nombre fixer par les reponses fournit par une bdd. Jusque la pas de problème. J'y arrive sans trop de problème.
    Ainsi tout mes boutons s'affichent très bien dans mon panel au centre avec un borderlayout.CENTER, j'ai aussi un bouton en BorderLayout.SOUTH qui me permet d'ajouter une donnée à ma base de donnée. Le problème c'est qu'une fois ma nouvelle entrée faite, je n'arrive pas a rafraichir mon panel pour qu'il affiche le nouveau bouton.

    Sais tu comment faire pour rafraichir ca ?

    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
    public class Gestionnaire extends JPanel implements ActionListener{
    	JButton ajout = new JButton("Ajout");
    	JButton supprimer = new JButton("Supprimer");
    	int nbResultEspece;
     
    	Gestionnaire(){
    		setLayout(new BorderLayout (5,5));
    		JPanel p = new JPanel();
    		JPanel d = new JPanel();
    		try {				
    			Statement state = connection.getInstance().createStatement();
    			ResultSet result = state.executeQuery("SELECT * FROM listeespece");
    			ResultSetMetaData resultMeta = result.getMetaData();
    			nbResultEspece = resultMeta.getColumnCount();
    			for (int i=2;i<=nbResultEspece;i++){
    				JButton listePatho = new JButton(resultMeta.getColumnName(i));
    				d.add(listePatho);
    				listePatho.setActionCommand(resultMeta.getColumnName(i));
    				listePatho.addActionListener(this);
    			}
     
                state.close();
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    		}
    		supprimer.setActionCommand("supprimer");
    		p.add(supprimer);
    		supprimer.addActionListener(this);
    		ajout.setActionCommand("ajout");
    		p.add(ajout);
    		ajout.addActionListener(this);
    		add(p, BorderLayout.SOUTH);
     
    	}
    	public void actionPerformed(ActionEvent e)
    	  {
    	    String commande = e.getActionCommand();
     
    	    if (commande.equals("ajout")) {
    		    System.out.println("Vous avez appuyé sur ajout");
    		    new ajoutCategorie();
    	    }
    	    if (commande.equals("supprimer")) {
    		    System.out.println("Vous avez appuyé sur supprimer");
    		    new supprimerCategorie();
    	    }
    	  }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import javax.swing.JFrame;
     
     
    public class ajoutCategorie {
    	static JFrame contourAjout = new JFrame();
    	public ajoutCategorie(){
     
    		contourAjout.setContentPane(new EssaiCartes2()); 
    	    contourAjout.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	    contourAjout.pack();
    	    contourAjout.setVisible(true); 
    	}
    }
    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
    public class EssaiCartes2 extends JPanel implements ActionListener{
    	JButton valider = new JButton("Valider");
    	JButton annuler = new JButton("Annuler");
    	JTextField nom = new JTextField();
     
    	public EssaiCartes2(){
    		setLayout(new BorderLayout(5,5));
    		JPanel sup = new JPanel();
    		JPanel inf = new JPanel();
     
    		valider.setActionCommand("valider");
    		inf.add(valider);
    		valider.addActionListener(this);
    		annuler.setActionCommand("annuler");
    		inf.add(annuler);
    		annuler.addActionListener(this);
    		add(inf, BorderLayout.SOUTH);
     
    		sup.add(nom);
    		nom.setPreferredSize(new Dimension(100,30));
    		add(sup, BorderLayout.CENTER);
    	}
    	public void actionPerformed(ActionEvent e)
    	  {
    	    String commande = e.getActionCommand();
     
    	    if (commande.equals("valider")) {
    	    	try {
    				Statement state = connection.getInstance().createStatement();
    				String query ="CREATE TABLE "+nom.getText()+"_categorie (id_categorie serial NOT NULL, CONSTRAINT "+nom.getText()+"_categorie_pkey PRIMARY KEY (id_categorie)) WITH (OIDS=TRUE); ALTER TABLE listeespece ADD COLUMN "+nom.getText()+" character varying(64)";
    				state.executeUpdate(query);
     
    			    state.close();
    			}
    			catch (Exception n) {
    				n.printStackTrace();
    			}
    	    	System.out.println("Vous avez valider une nouvelle donnée");
    	    }
    	    if (commande.equals("annuler")) {
    		    ajoutCategorie.contourAjout.dispose();
    	    }
    	  }
    }

Discussions similaires

  1. probleme de lien entre frame
    Par remooz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 24/01/2007, 14h54
  2. Echange de données entre Frame
    Par Ghosen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/01/2007, 16h11
  3. [frame][actualisation]probleme d'actualisation entre frame
    Par Amidal dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/06/2006, 10h33
  4. dialogue entre frames
    Par funkadelic dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/12/2005, 11h09
  5. lien entre frame
    Par zorglub88 dans le forum MFC
    Réponses: 16
    Dernier message: 07/06/2005, 11h54

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