[JAVA] fermer une seule fenetre sur 2 ouverte
garpa
Messages postés
36
Statut
Membre
-
bilel -
bilel -
Bonjour à tous,
Je debute en java et je dois faire un jeu.
J'ai fait une premiere fenetre qui demande le nom des joueurs et une deuxieme qui est le jeu lui même. Jusque la pas de probleme.
Le probleme c'est que je souhaite fermer la premiere fenetre qui demande les noms de joueurs et ensuite ouvrir celle du jeu.
Dans mon main j'appel les deux fenetres les unes apres les autres et soit j'ouvre tout soit je ferme tout mais impossible de n'en fermer qu'une seule.
Quelqu'un aurait une piste SVP
Merci
Je debute en java et je dois faire un jeu.
J'ai fait une premiere fenetre qui demande le nom des joueurs et une deuxieme qui est le jeu lui même. Jusque la pas de probleme.
Le probleme c'est que je souhaite fermer la premiere fenetre qui demande les noms de joueurs et ensuite ouvrir celle du jeu.
Dans mon main j'appel les deux fenetres les unes apres les autres et soit j'ouvre tout soit je ferme tout mais impossible de n'en fermer qu'une seule.
Quelqu'un aurait une piste SVP
Merci
A voir également:
- [JAVA] fermer une seule fenetre sur 2 ouverte
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Supercopier 2 - Télécharger - Gestion de fichiers
- Application se ferme toute seule android - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
3 réponses
Salut!
Ce que tu dois faire, c'est ouvrir tes deux fenêtres (deux classes différentes, je suppose) depuis une autre classe. Lorsque les joeurus ont entrés leurs noms et que, par exemple, le dernier à donner son nom clique sur un bouton "ok" pour signifier que tous les noms ont été fournis, la "fenêtre des noms" doit avertir la classe qui a ouvert tes deux fenêtres que les noms ont été entrés.
La classe qui a ouvert les 2 fenêtres doit alors femer la première puis ouvrir la seconde, celle de jeu proprement dite.
Vois l'exemple ci-dessous:
Classe qui instancie les deux fenêtres:
Première fenêtre (nom des joueurs):
Seconde fenêtre (jeu):
;-)
Hacktrack
Ce que tu dois faire, c'est ouvrir tes deux fenêtres (deux classes différentes, je suppose) depuis une autre classe. Lorsque les joeurus ont entrés leurs noms et que, par exemple, le dernier à donner son nom clique sur un bouton "ok" pour signifier que tous les noms ont été fournis, la "fenêtre des noms" doit avertir la classe qui a ouvert tes deux fenêtres que les noms ont été entrés.
La classe qui a ouvert les 2 fenêtres doit alors femer la première puis ouvrir la seconde, celle de jeu proprement dite.
Vois l'exemple ci-dessous:
Classe qui instancie les deux fenêtres:
package twoframes;
import javax.swing.JFrame;
/**
* Created on 09-avr.-07
*
* @author: HackTrack
*/
public class FramesHandler {
private FirstFrame firstFrame;
private SecondFrame secondFrame;
public FramesHandler() {
super();
}
public void startDemo(){
firstFrame = new FirstFrame(this);
secondFrame = new SecondFrame(this);
firstFrame.pack();
firstFrame.setVisible(true);
}
public void handle(JFrame sourceFrame){
if(sourceFrame==firstFrame){
System.out.println("Message reçu de firstFrame");
firstFrame.setVisible(false);
secondFrame.setFirstPlayerName(firstFrame.getFirstPlayerName());
secondFrame.setSecondPlayerName(firstFrame.getSecondPlayerName());
secondFrame.pack();
secondFrame.setVisible(true);
}else if(sourceFrame==secondFrame){
System.out.println("Message reçu de secondFrame");
}
}
public static void main(String[] args) {
FramesHandler demo = new FramesHandler();
demo.startDemo();
}
}
Première fenêtre (nom des joueurs):
package twoframes;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* Created on 09-avr.-07
*
* @author: HackTrack
*/
public class FirstFrame extends JFrame {
private Container c;
private FramesHandler handler;
private JTextField firstPlayer;
private JTextField secondPlayer;
private FirstFrame instance;
public FirstFrame(FramesHandler handler) {
super("Inscription des joueurs");
this.handler=handler;
instance=this;
initializeComponent();
}
private void initializeComponent() {
c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel registrationPanel = new JPanel();
registrationPanel.setPreferredSize(new Dimension(320,200));
registrationPanel.setLayout(new GridLayout(3,2));
registrationPanel.add(new JLabel("Player 1:"));
firstPlayer = new JTextField("Player 1");
registrationPanel.add(firstPlayer);
registrationPanel.add(new JLabel("Player 2:"));
secondPlayer = new JTextField("Player 2");
registrationPanel.add(secondPlayer);
JButton okButton = new JButton("Ok");
okButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
handler.handle(instance);
}
});
registrationPanel.add(okButton);
JButton resetButton = new JButton("Reset");
resetButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
firstPlayer.setText("Player 1");
secondPlayer.setText("Player 2");
}
});
registrationPanel.add(resetButton);
c.add(registrationPanel);
}
public String getFirstPlayerName(){
return firstPlayer.getText();
}
public String getSecondPlayerName(){
return secondPlayer.getText();
}
}
Seconde fenêtre (jeu):
package twoframes;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* Created on 09-avr.-07
*
* @author: HackTrack
*/
public class SecondFrame extends JFrame {
private Container c;
private FramesHandler handler;
private JLabel firstPlayerName;
private JLabel secondPlayerName;
public SecondFrame(FramesHandler handler) {
super("Jeu");
this.handler = handler;
initializeComponent();
}
private void initializeComponent() {
c = getContentPane();
c.setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel playersPanel = new JPanel();
firstPlayerName = new JLabel();
playersPanel.add(firstPlayerName);
secondPlayerName = new JLabel();
playersPanel.add(secondPlayerName);
c.add(playersPanel, BorderLayout.NORTH);
JPanel playPanel = new JPanel();
playPanel.setPreferredSize(new Dimension(640, 480));
c.add(playPanel, BorderLayout.CENTER);
}
public void setFirstPlayerName(String firstPlayer) {
firstPlayerName.setText(firstPlayer);
}
public void setSecondPlayerName(String secondPlayer) {
secondPlayerName.setText(secondPlayer);
}
}
;-)
Hacktrack