Changer de panel apres un certain temps

Résolu
M88fly Messages postés 11 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 2 mars 2015 - 21 févr. 2015 à 12:43
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 2 mars 2015 à 10:06
Bonjour,

J'ai un petit projet à réaliser et j'aimerai savoir comment peut-on changer de panel au cours du temps ? Quelle méthode utiliser ? Svp

Merci beaucoup !

2 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 mars 2015 à 10:06
Salut,

Sinon autre solution, utiliser les Layouts proposés par Java exemple ici avec un CardLayout.

(J'ai repris le code proposé par Shadorc)
final JFrame frame = new JFrame("Ma fenêtre");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JPanel panel1 = new JPanel();
panel1.add(new JLabel("Mon premier panel"));

final JPanel panel2 = new JPanel();
panel2.add(new JLabel("Mon deuxième panel"));

final JPanel cards = new JPanel(new CardLayout());
cards.add(panel1, "panel1");
cards.add(panel2, "panel2");
frame.setContentPane(cards);
frame.pack();
frame.setVisible(true);

final Timer timer = new Timer(1000, new ActionListener() {
  @Override
  public void actionPerformed(final ActionEvent arg0) {
    final CardLayout cl = (CardLayout) (cards.getLayout());
    cl.show(cards, "panel2");
  }
});
timer.start();

1
Shadorc Messages postés 42 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 9 mai 2015
28 févr. 2015 à 01:25
Bonjour !

J'imagine que ton panel est contenu dans une JFrame, si c'est le cas tu peux faire cela par exemple,

JFrame frame = new JFrame("Ma fenêtre");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel1 = new JPanel();
panel1.add(new JLabel("Mon premier panel"));

JPanel panel2 = new JPanel();
panel2.add(new JLabel("Mon deuxième panel"));

frame.setContentPane(panel1);
frame.pack();
frame.setVisible(true);

Timer timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
frame.remove(frame.getContentPane());
frame.setContentPane(panel2);
frame.getContentPane().revalidate();
frame.getContentPane().repaint();
}
});
timer.start();


Le timer te permet d'effectuer une action au bout d'un certain temps :
Le premier argument est le temps en ms que le timer va attendre avant d'effectuer ce qui se trouve dans actionPerformed().
Ici, au bout d'une seconde, on enlève le panel1 de la fenêtre, on ajoute le panel2 et on actualise la fenêtre.

Pour plus d'informations sur la classe Timer :
http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html

J'espère t'avoir aidé !
0
Rejoignez-nous