|
|
|
|
Configuration: Windows XP Internet Explorer 6.0
Mias pourquoi personne ne répond?? Mon idée est stupide? Dites moi quelque chose s'il vous plaît je suis perdu!!!! |
public void actionPerformed(ActionEvent e){
Container conteneur = fenetre.getContentPane();
//premier changement
if (e.getSource()==boutonA) {
//on enlève tout
conteneur.removeAll();
fenetre.repaint();
//on rajoute tout
JButton boutonB=new JButton("acheter");
conteneur.add(boutonB);
boutonB.addActionListener(this);
conteneur.validate();
fenetre.repaint();
//deuxieme changement
if(e.getSource()==boutonB){
System.out.println("ca marche?");
conteneur.removeAll();
fenetre.repaint();
//on rajoute tout
JButton boutonG=new JButton("choix entreprise");
conteneur.add(boutonG);
conteneur.validate();
fenetre.repaint();
}
}
}
Voilà une présentation plus lisible de ta méthode (actionPerformed), Il me semble que ta méthode est mal implémentée. En effet, si la source de l'action est le bouton A, tu exécute ce bout de code là en entier :
//on enlève tout
conteneur.removeAll();
fenetre.repaint();
//on rajoute tout
JButton boutonB=new JButton("acheter");
conteneur.add(boutonB);
boutonB.addActionListener(this);
conteneur.validate();
fenetre.repaint();
//deuxieme changement
if(e.getSource()==boutonB){
System.out.println("ca marche?");
conteneur.removeAll();
fenetre.repaint();
//on rajoute tout
JButton boutonG=new JButton("choix entreprise");
conteneur.add(boutonG);
conteneur.validate();
fenetre.repaint();
}
Par contre si la source de l'action est le bouton B, tu ne passe pas le premier test, donc ne fais pas le second. Pour corriger cela, il te suffit de sortir correctement ton deuxième test de la facon suivante :
public void actionPerformed(ActionEvent e){
Container conteneur = fenetre.getContentPane();
//premier changement
if (e.getSource()==boutonA) {
//on enlève tout
conteneur.removeAll();
fenetre.repaint();
//on rajoute tout
JButton boutonB=new JButton("acheter");
conteneur.add(boutonB);
boutonB.addActionListener(this);
conteneur.validate();
fenetre.repaint();
}
//deuxieme changement
else if(e.getSource()==boutonB){
System.out.println("ca marche?");
conteneur.removeAll();
fenetre.repaint();
//on rajoute tout
JButton boutonG=new JButton("choix entreprise");
conteneur.add(boutonG);
conteneur.validate();
fenetre.repaint();
}
}
Ca fonctionnera déjà mieux je pense, mais il est possible que cela ne résoud pas totalement ton problème (le programme est mal construit selon moi), à voir... Bon courage. ~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~ |
Merci beaucoup pour ta réponse, oui je pense effectivement que mon code est mal conçu, mais je desespoérais que quelqu un me réponde un jour... J'ai essayé ton code pour la méthode actionPerformed, ça ne marche toujours pas, en même temps vu que le boutonB est créé dans le premier test, ca m'etonnait qu'on puisse faire un test portant sur ce boutonB hors du premier test (j'espere que c'est compréhensible ce que je raconte), c'est pour cela que j'avais imbriqué les deux tests l'un dans l'autre...
Je vais essayer de totalement revoir mon programme avec différentes fenetres et des setVisible(true) ou setVisible(false)... Je n'ai pas dit mon dernier mot, merci pour ta réponse! |
J'ai résolu mon problème de la façon que j'expliquais au dessus, si ça interesse quelqu'un voilà des bouts de code (mon programme ne ressemble plus à celui du premier post):
-1ere classe fenetre1: import java.io.*; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Fen1{ //attributs private JFrame fenetre; private JButton boutonA,boutonB; private JLabel texte0, texte1, texte2; private JTextField champA, champB; private Dimension dimension; //constructeur public Fen1() { this.fenetre=new JFrame("Bourse Willis"); this.texte0=new JLabel("Bienvenue sur Bourse Willis",SwingConstants.CENTER); this.texte1=new JLabel("Veuillez renter votre numéro client:"); this.texte2=new JLabel("Mot de passe:"); this.champA=new JTextField(20); this.champB=new JTextField(20); this.dimension=new Dimension(100,100); this.boutonA=new JButton("login"); Container conteneur = fenetre.getContentPane(); /*FlowLayout*/GridLayout disposition = new /*FlowLayout() */GridLayout(10,1); /*disposition.setAlignment(FlowLayout.CENTER); JPanel boutons=new JPanel(); FlowLayout dispositionBoutons=new FlowLayout(); boutons.setLayout (dispositionBoutons);*/ conteneur.setLayout(disposition); //on ajoute tout conteneur.add(this.texte0); texte0./*reshape(20,20,20,20)*/setMinimumSize(dimension); conteneur.add(this.texte1); conteneur.add(this.champA); conteneur.add(this.texte2); conteneur.add(this.champB); conteneur.add(this.boutonA); this.fenetre./*pack()*/setBounds(20,40,300,300); } //getteurs public JButton getBoutonA (){ return boutonA; } //méthode public void setVisible(boolean b){ if (b) { this.fenetre.setVisible(true); } else { this.fenetre.setVisible(false); } } } ensuite je crée les autres fenetres de la meme facon, puis la classe fenetres: import java.io.*; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Fenetres implements ActionListener { //attributs Fen1 fen1; Fen2 fen2; Fen31 fen31; Fen32 fen32; //constructeur public Fenetres(){ this.fen1=new Fen1(); fen1.setVisible(true); fen1.getBoutonA().addActionListener(this); this.fen2=new Fen2(); fen2.getBoutonA().addActionListener(this); fen2.getBoutonB().addActionListener(this); } //méthode public void actionPerformed(ActionEvent e){ if (e.getSource()==fen1.getBoutonA()) { //on cache la première fenêtre fen1.setVisible(false); //on montre la deuxième fen2.setVisible(true); } if (e.getSource()==fen2.getBoutonA()) { //on cache la deuxième fenêtre fen2.setVisible(false); //on montre la troisième fen31=new Fen31(); fen31.setVisible(true); } if (e.getSource()==fen2.getBoutonB()) { //on cache la deuxième fenêtre fen2.setVisible(false); //on montre la troisième fen32=new Fen32(); fen32.setVisible(true); } } } Et là magie, ca fonctionne, je peux enchainer autant de fenetres que je veux. Merci pour l'aide! |
| 01/11 09h23 | [Windows] Fermer toutes les fenêtres d'exploration actives | Windows |
| 01/09 09h57 | [Java] Créer une applet qui accède au disque dur | Programmation |
| 13/03 12h06 | Installer Java sous Ubuntu | Ubuntu |
| 09/04 21h47 | Comment bloquer les fenêtres CiD ? | Spywares |
| 11/10 11h47 | Empêcher la fermeture de la fenêtre ipconfig ou ping | Windows XP |
| 03/10 15h26 | Javasript Ouvrir fenetre à la fermeture site | 2 |
| 05/01 16h33 | Javascript - positionnement fenetre prompt | 1 |
| 01/07 10h50 | Probleme Javascript écriture fenetre spécifiq | 2 |
| 13/06 16h18 | Fenetre javascript | 4 |
![]() | Java Runtime Environment - Java Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des... | Catégorie: Java Licence: Open Source |
![]() | FreeMind - FreeMind est un logiciel de Mind mapping entièrement libre, permettant de créer des cartes heuristiques permettant de... | Catégorie: Organisation Licence: Open Source |
![]() | Web Developer Toolbar - WebDeveloper est une extension firefox représentant une formidable boîte à outils pour examiner et manipuler les pages... | Catégorie: Extensions Firefox Licence: Freeware/gratuit |
![]() | Azureus - Azureus est un client BitTorrent multiplateformes développé en Java, c'est-à-dire un gestionnaire de téléchargement de... | Catégorie: Téléchargement Licence: Open Source |
![]() | Cabasse JAVA MT4 Cherry | Catégorie: Enceintes | 1,475.00 € PriceMinister |
![]() | Cabasse JAVA MT4 Beige | Catégorie: Enceintes | 1,475.00 € PriceMinister |
![]() | Cabasse JAVA MT4 Black | Catégorie: Enceintes | 1,499.00 € Son-Vidéo |
![]() | sun Java Workstation W1100z | Catégorie: Ordinateur de bureau |