rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[JAVA] fermer une seule fenetre sur 2 ouverte

Posté par garpa, le samedi 7 avril 2007 à 16:19:01
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
Configuration: Windows XP
Firefox 2.0.0.3
Répondre à garpa  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
arth, le samedi 7 avril 2007 à 16:38:54
fais un frame.dispose() sur la fenetre que tu souhaite fermer. Le loup, solitaire et mystérieux.
Répondre à arth

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 HackTrack, le lundi 9 avril 2007 à 13:46:31
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:
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.getFirstPlayerN­ame());
			secondFrame.setSecondPlayerName(firstFrame.getSecondPlaye­rName());
			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
Répondre à HackTrack
Logiciels pertinents trouvés dans les téléchargements
Télécharger Delphi 6 Edition personnelle 6.0Delphi 6 Edition personnelle - La société Borland (Inprise) a mis à disposition gratuitement, pour un usage non-commercial, la version 6 de son...Catégorie: Delphi
Licence: Freeware/gratuit
Télécharger Opera 9.51Opera - Marre des trous de sécurité du navigateur par défaut ? Envie enfin d'avoir un navigateur simple et configurable facilement ?...Catégorie: Navigateurs
Licence: Freeware/gratuit
Télécharger TaskBar Shuffle 2.0TaskBar Shuffle - Tout simple mais pratique: Ce programme permet de déplacer les tâches dans la barre des tâches par simple drag-n-drop...Catégorie: Optimisation
Licence: Freeware/gratuit
Télécharger IE_Kill   2.0IE_Kill - Les anciennes versions d'IE ne possèdent pas encore le système d'onglet. Cette fonction est très intéressante puisque...Catégorie: Navigateurs
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [JAVA] fermer une seule fenetre sur 2 ouverte »