|
|
|
|
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
Salut!
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 |