Passer d'une JFrame a une autre

Passer d'une JFrame a une autre - Java - Programmation

Marsh Posté le 23-04-2007 à 22:02:09    

Bonjour,  
 
Je débute en interface et j'ai un petit problème.
J'aimerai passer une vue a une autre en cliquant sur un bouton de la premiere fenetre. C'est a dire j'ai deux frame instance d'une classe dérivé de JFrame. La premiere des deux frames possedent un bouton pour aller affficher la seconde.
 
Voici ce que j'ai fait :

Code :
  1. frame1.setVisible(false);
  2. MaJFrame fen = new MaJFrame();
  3. fen.setVisible(true);


 
Le problème est que j'ouvre une nouvelle fenetre en cachant l'ancienne du coup si j'ai déplacé la premiere je dois redeplacer la deuxième, or je ne le veux pas... Existe t-il une méthode pour y parvenir? J'ai regardé dans la javadoc mais je n'ai pas trouvé m'a t elle échappé ou n'existe t-elle pas? (ou y a t il un moyen simple d'y parvenir?)
 
Ceci m'aiderait beaucoup je m'excuse par avance s'il s'agit d'une question bête... Mais il faut bien un début à tout!  ;)  
 
Merci d'avance en tout cas

Reply

Marsh Posté le 23-04-2007 à 22:02:09   

Reply

Marsh Posté le 23-04-2007 à 22:42:23    

Bonsoir,
 
Tu veux faire quoi exactement ?
 
Un affichage en cascade ? ou lorsque tu cliques passer de la 1 à la 2 puis à la 1 ?

Reply

Marsh Posté le 23-04-2007 à 23:06:40    

Et bien en fait je veux juste que lorsque je clique sur le bouton on passe a la 2.
C'est a dire mettre a jour la fenetre en quelque sorte mais avec la deuxieme fenetre.
 
Concretement quand on clique la deuxieme fenetre remplace la premiere. Du coup si on a redimensionné, ou déplacer la fenetre on voit la deuxieme fenetre mais la fenetre reste de la taille qu'on a choisi et a l'endroit qu'on a choisi...
 
J'espere avoir été plus clair...
 
Merci pour ton aide en tout cas!

Reply

Marsh Posté le 25-04-2007 à 12:39:50    

Pensez vous qu'il existe une méthode pour faire cela (genre qui serait applicable a la premiere frame et prendrait en parametre la seconde meme si je ne pense pas que ce soit le cas car j'ai pas trouvé de tel méthode dans la javadoc). Sinon quelqu'un aurait il une petite idée d'une bidouille a faire pour que cela rende le même résultat?
 
Au cas ou je n'ai pas été assez clair plus haute je réexplique mon problème : j'ai deux vu differentes. Sur la premiere vu j'ai un bouton, j'aimerai que lorsqu'on clique sur ce bouton la fenetre courante (c'est a dire la vue1) se transforme en la vue 2. Sans avoir besoin de créer une nouvelle fenetre que l'on ouvrirait en rendant la fenetre1 invisible car cela pose problème si la fenetre a été redimensionné ou déplacé (ce qui est important pour le programme).
 
J'ai un projet a faire et c'est le seul truc qui déconne mais je ne trouve pas de façon de m'en sortir autrement que par le bout de code que j'ai is plus haut (qui ne fait donc pas ce que je veux)...
 
Si quelqu'un a une petite idée ca me serait vraiment très utile...
 
Merci d'avance! :)

Reply

Marsh Posté le 25-04-2007 à 14:17:16    

tu sauvegardes les coordonnées de ta première fenêtre (position et taille) et tu les réappliques à la nouvelle fenêtre créée.

 

regarde la méthode setBounds(..) de la classe Window (package java.awt.Window)

 

pierrot


Message édité par unpierrot le 25-04-2007 à 14:17:34
Reply

Marsh Posté le 25-04-2007 à 21:26:41    

Merci Pierrot! C'est une bonne idée je n'y avais pas pensé...
 
Si jamais quelqu'un voit une autre facon de faire qui ferait un peu moins "bidouillage" ca serait cool car si jamais mon prof voit ce bidouillage il risque de pas trop apprécié! En même temps on a eut un demi-cours en interfac graphique c'est vraiment dur de se débrouiller avec si peu...
 
Encore merci en tout cas! :)

Reply

Marsh Posté le 03-05-2007 à 21:56:33    

Bonjour,
 
Ce problème est pas mal handicapant pour mon programme (ca le fait pas mal lagguer de relancer a chaque fois une nouvelle fenetre).
J'ai donc essayé plein de facons pour ne pas à avoir a rouvrir une nouvelle fenêtre a chaque fois mais je n'y parviens pas... Voici ma derniere méthode en date qui ne fonctionne pas.... (a noter que je suis dans une classe qui dérive de JFrame)
 

Code :
  1. public void changeFenetre (JFrame f)
  2. {
  3.  this.removeAll();
  4.  Container c1 = getContentPane();
  5.  Container c2 = f.getContentPane();
  6.  c1 = c2;
  7. }


 
En fait l'idéal serait de créer une méthode qui prendrait une fenetre en parametre, elle serait dans la classe de la premiere fenetre et lorsqu'on l'appelerait modifierait tous le contenu de la premiere par la deuxieme...
 
Est-ce possible?  
C'est le dernier petit hic dans mon programme ca m'aiderait vraiment beaucoup si quelqu'un a une idée ce serait super sympa...
 
Merci d'avance en tout cas!  :)

Reply

Marsh Posté le 22-04-2009 à 14:50:30    

Je me permet de remonter ce topic car je bloque sur un programme similaire à celui ci.
J'ai une fenêtre possédant un bouton et un label (affichant "0" ).
L'objectif est, lors de l'appui sur le bouton, de créer une nouvelle fenêtre possédant les mêmes caractéristiques que l'ancienne, mais avec le texte du label incrémenté de 1 (la deuxième fenêtre affichera donc "1", la troisième "2", etc...), et de cacher ou fermer l'ancienne fenêtre.
 
Voici mon code pour l'instant :
 

Code :
  1. import javax.swing.JFrame;
  2. import javax.swing.JPanel;
  3. import javax.swing.JButton;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import javax.swing.*;
  7. public class ptitefenetre extends JFrame implements ActionListener{
  8. private JButton bouton = new JButton("Clic" );
  9. private JLabel label = new JLabel();
  10. private String texte = "0";
  11. private Container contenu;
  12. public ptitefenetre(String texte){
  13.  this.setResizable(false);
  14.  this.setBounds(0, 0, 150, 200);
  15.  this.setVisible(true);
  16.  this.setTitle("Ptite fenêtre" );
  17.  contenu = getContentPane();
  18.  contenu.setLayout(new FlowLayout());
  19.  contenu.add(bouton);
  20.  label.setText(texte);
  21.  contenu.add(label);
  22.  bouton.addActionListener(this);
  23. }
  24. public void actionPerformed(ActionEvent e){
  25.  JButton source = (JButton) e.getSource();
  26.  int res;
  27.  if (source==bouton)
  28.  {
  29.   res = Integer.parseInt(texte)+1;
  30.   texte = String.valueOf(res);
  31.   ptitefenetre fen = new ptitefenetre(texte);
  32.   this.dispose();
  33.  }
  34. }
  35. }


 
A ce niveau là, j'arrive a passer de la première fenêtre (marquée "0" ) à la seconde (qui m'affiche correctement "1" ). Mais si je clique à nouveau, le label reste à "1"... Voici donc mon souci, si quelqu'un peut m'aider ^^
Merci

Reply

Marsh Posté le 23-04-2009 à 00:21:58    

Pas testé :

Code :
  1. import javax.swing.JFrame;
  2. import javax.swing.JPanel;
  3. import javax.swing.JButton;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import javax.swing.*;
  7. public class ptitefenetre extends JFrame implements ActionListener{
  8. private JButton bouton = new JButton("Clic" );
  9. private JLabel label = new JLabel();
  10. private String texte = "0";
  11. private Container contenu;
  12. public ptitefenetre(String texte, int res){
  13.  this.setResizable(false);
  14.  this.setBounds(0, 0, 150, 200);
  15.  this.setVisible(true);
  16.  this.setTitle("Ptite fenêtre" );
  17.  contenu = getContentPane();
  18.  contenu.setLayout(new FlowLayout());
  19.  contenu.add(bouton);
  20.  label.setText(texte);
  21.  contenu.add(label);
  22.  bouton.addActionListener(this);
  23. }
  24. public void actionPerformed(ActionEvent e){
  25.  JButton source = (JButton) e.getSource();
  26.  if (source==bouton)
  27.  {
  28.   res = Integer.parseInt(texte)+1;
  29.   texte = String.valueOf(res);
  30.   ptitefenetre fen = new ptitefenetre(texte, res+1);
  31.   this.dispose();
  32.  }
  33. }
  34. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed