Java écouteurs
Fermé
hugo0x
Messages postés
17
Date d'inscription
mardi 27 octobre 2009
Statut
Membre
Dernière intervention
29 octobre 2009
-
27 oct. 2009 à 10:58
hugo0x Messages postés 17 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 29 octobre 2009 - 28 oct. 2009 à 13:39
hugo0x Messages postés 17 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 29 octobre 2009 - 28 oct. 2009 à 13:39
A voir également:
- Java écouteurs
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
10 réponses
biboo_
Messages postés
1249
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
14 mars 2012
106
27 oct. 2009 à 12:04
27 oct. 2009 à 12:04
Oui, dans ton constructeur tu peux mettre :
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Sinon, tu as la méthode dispose() (que tu places sur un événement).
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Sinon, tu as la méthode dispose() (que tu places sur un événement).
biboo_
Messages postés
1249
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
14 mars 2012
106
27 oct. 2009 à 11:27
27 oct. 2009 à 11:27
L'erreur vient de là:
Comme tu as implémenté l'interface Listener, et que tu as ta méthode actionPerformed, il faut que tu fasses appel à ta propre classe puisqu'elle implémente Listener.
La solution serait donc:
ActionListener play = null; jbPlay.addActionListener(play); ActionListener close = null; jbClose.addActionListener(close);
Comme tu as implémenté l'interface Listener, et que tu as ta méthode actionPerformed, il faut que tu fasses appel à ta propre classe puisqu'elle implémente Listener.
La solution serait donc:
jbPlay.addActionListener(this); jbClose.addActionListener(this);
hugo0x
Messages postés
17
Date d'inscription
mardi 27 octobre 2009
Statut
Membre
Dernière intervention
29 octobre 2009
4
27 oct. 2009 à 11:59
27 oct. 2009 à 11:59
ho! merci ! merci beaucoup!
Et, en passant, connais tu le code pour fermer une fenêtre?
Voila:
La classe jeu crée une nouvelle fenetre, mais je ne trouve pas comment fermer celle ci...
j'ai même essayé de faire croire au programme que le joueur cliquait sur la croix...
Et, en passant, connais tu le code pour fermer une fenêtre?
Voila:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; public class fenetre extends JFrame implements ActionListener { JButton jbPlay; JButton jbClose; JLabel label; //***********french notes.. :D************* public fenetre (String titre) { //création de la méthode constructeur setTitle (titre); Container contenu = getContentPane(); JButton jbPlay = new JButton("", new ImageIcon("jouer.gif")); JButton jbClose = new JButton("", new ImageIcon("exit.gif")); jbPlay.setFocusPainted(false); jbPlay.setBorderPainted(false); // ces trois lignes enelvent la bordure du boutton jbPlay.setContentAreaFilled(false); jbClose.setFocusPainted(false); jbClose.setBorderPainted(false); // ces trois lignes sont les meme que la haut :) jbClose.setContentAreaFilled(false); contenu.setLayout(null); JLabel label = new JLabel(); Image image = Toolkit.getDefaultToolkit().createImage("background.gif");// nouveau JLabel backgound label.setIcon(new ImageIcon(image)); contenu.add(jbPlay, 0); contenu.add(jbClose, 1); contenu.add(label, 2); label.setBounds(0, 0, 900, 800); jbPlay.setBounds(50, 445, 850, 78); jbClose.setBounds(50, 640, 158, 50); ActionListener play = null; jbPlay.addActionListener(this); ActionListener close = null; jbClose.addActionListener(this); setSize(907,832); setResizable(false); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent play) { jeu(); } private void jeu() { jeu j = new jeu("Doode"); }}
La classe jeu crée une nouvelle fenetre, mais je ne trouve pas comment fermer celle ci...
j'ai même essayé de faire croire au programme que le joueur cliquait sur la croix...
hugo0x
Messages postés
17
Date d'inscription
mardi 27 octobre 2009
Statut
Membre
Dernière intervention
29 octobre 2009
4
27 oct. 2009 à 12:30
27 oct. 2009 à 12:30
Merci, et pour finir, es-ce normal que quand je presse n'importe quel bouton, cela m'effectue toujours la même action...(m'ouvre ma seconde fenêtre et ne ferme rien)
J'ai testé ceci :
J'ai testé ceci :
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; public class fenetre extends JFrame implements ActionListener { JButton jbPlay; JButton jbClose; JLabel label; //***********french notes.. :D************* public fenetre (String titre) { //création de la méthode constructeur setTitle (titre); Container contenu = getContentPane(); JButton jbPlay = new JButton("", new ImageIcon("jouer.gif")); JButton jbClose = new JButton("", new ImageIcon("exit.gif")); jbPlay.setFocusPainted(false); jbPlay.setBorderPainted(false); // ces trois lignes enelvent la bordure du boutton jbPlay.setContentAreaFilled(false); jbClose.setFocusPainted(false); jbClose.setBorderPainted(false); // ces trois lignes sont les meme que la haut :) jbClose.setContentAreaFilled(false); contenu.setLayout(null); JLabel label = new JLabel(); Image image = Toolkit.getDefaultToolkit().createImage("background.gif");// nouveau JLabel backgound label.setIcon(new ImageIcon(image)); contenu.add(jbPlay, 0); contenu.add(jbClose, 1); contenu.add(label, 2); label.setBounds(0, 0, 900, 800); jbPlay.setBounds(50, 445, 850, 78); jbClose.setBounds(50, 640, 158, 50); ActionListener play = null; jbPlay.addActionListener(this); ActionListener close = null; jbClose.addActionListener(this); setSize(907,832); setResizable(false); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent play) { jeu(); } public void actionPerformed2(ActionEvent close) { dispose(); } private void jeu() { jeu j = new jeu("Doode"); }}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
biboo_
Messages postés
1249
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
14 mars 2012
106
27 oct. 2009 à 13:33
27 oct. 2009 à 13:33
Attention, tu confonds.
public void actionPerformed(ActionEvent event) est une méthode de l'interface ActionListener.
Elle est utilisée pour tout ce qui est bouton (jusque là tu as bon).
Ta méthode actionPerformed2 n'existe que parce que tu l'as créée. Elle ne sera donc pas utilisée par les événements.
En fait, TOUS les événements affectés aux boutons passeront irrémédiablement par ta méthode actionPerformed. C'est d'ailleurs la raison pour laquelle tu ouvres une fenêtre de jeu à chaque clic sur n'importe quel bouton. Il te faut donc à chaque fois DISTINGUER sur quel bouton tu as cliqué.
Voici ce que tu dois obtenir:
J'ai deux questions :
1/ ta class Jeu (d'ailleurs, on débute TOUJOURS par convention le nom d'une classe par une majuscule) s'ouvre-t-elle dans la même fenêtre que le bouton qui le lance ou dans une fenêtre séparemment?
2/ ton bouton close, qu'est-il sensé fermer au juste? L'interface principale ou ton interface de jeu?
public void actionPerformed(ActionEvent event) est une méthode de l'interface ActionListener.
Elle est utilisée pour tout ce qui est bouton (jusque là tu as bon).
Ta méthode actionPerformed2 n'existe que parce que tu l'as créée. Elle ne sera donc pas utilisée par les événements.
En fait, TOUS les événements affectés aux boutons passeront irrémédiablement par ta méthode actionPerformed. C'est d'ailleurs la raison pour laquelle tu ouvres une fenêtre de jeu à chaque clic sur n'importe quel bouton. Il te faut donc à chaque fois DISTINGUER sur quel bouton tu as cliqué.
Voici ce que tu dois obtenir:
public void actionPerformed(ActionEvent event) { if(event.getSource() == jbPlay) { // Tout ce qui concerne le bouton play } if(event.getSource() == jbClose) { // Tout ce qui concerne le bouton close }
J'ai deux questions :
1/ ta class Jeu (d'ailleurs, on débute TOUJOURS par convention le nom d'une classe par une majuscule) s'ouvre-t-elle dans la même fenêtre que le bouton qui le lance ou dans une fenêtre séparemment?
2/ ton bouton close, qu'est-il sensé fermer au juste? L'interface principale ou ton interface de jeu?
hugo0x
Messages postés
17
Date d'inscription
mardi 27 octobre 2009
Statut
Membre
Dernière intervention
29 octobre 2009
4
27 oct. 2009 à 14:07
27 oct. 2009 à 14:07
Alors, tout d'abord, merci, ma classe jeu s'ouvre dans une autre fenêtre que celle ci, par souci de praticité:
code classe jeu(qui d'ailleurs refuse d'afficher mon image):
et je souhaite fermer la fenetre du menu, donc je ne sais pas si je doit mettre dispose(contenu); ou contenu.dispose(); car cela ne marche pas..
code classe jeu(qui d'ailleurs refuse d'afficher mon image):
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; public class jeu extends JFrame { JLabel fond; public jeu (String titre) { setTitle (titre); Container contenu2 = getContentPane(); contenu2.setLayout(null); JLabel fond = new JLabel(); Image image = Toolkit.getDefaultToolkit().createImage("fond.gif"); fond.setIcon(new ImageIcon(image)); contenu2.add(fond); fond.setBounds(0, 0, 900, 800); setResizable(false); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); }}
et je souhaite fermer la fenetre du menu, donc je ne sais pas si je doit mettre dispose(contenu); ou contenu.dispose(); car cela ne marche pas..
biboo_
Messages postés
1249
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
14 mars 2012
106
27 oct. 2009 à 14:39
27 oct. 2009 à 14:39
Premier point :
dispose() est une méthode de la classe JFrame.
getContentPane() ne renvoie pas la JFrame courante, mais le Pane associé par défaut à ta JFrame.
Second point :
D'un point de vue fonctionnel, il n'est pas utile de faire un bouton ferme, puisque la croix ferme l'application.
Après, si tu insistes :), tu peux créer un listener sur les fenêtres (du même principe que les boutons).
Dans ta JFrame, il faut implementer l'interface WindowListener (tout comme l'actionListener):
Ensuite, il faut ajouter un écouteur à ta JFrame, puis implémenter la méthode qui réalise les actions sur la fermeture des fenêtres :
On peut faire une méthode qui ferme la JFrame courante, à laquelle on fait appel (la méthode, pas la JFrame)
dispose() est une méthode de la classe JFrame.
getContentPane() ne renvoie pas la JFrame courante, mais le Pane associé par défaut à ta JFrame.
Second point :
D'un point de vue fonctionnel, il n'est pas utile de faire un bouton ferme, puisque la croix ferme l'application.
Après, si tu insistes :), tu peux créer un listener sur les fenêtres (du même principe que les boutons).
Dans ta JFrame, il faut implementer l'interface WindowListener (tout comme l'actionListener):
class Bidule extends JFrame implements ActionListener, WindowListener { }
Ensuite, il faut ajouter un écouteur à ta JFrame, puis implémenter la méthode qui réalise les actions sur la fermeture des fenêtres :
this.addWindowListener(this); public void windowClosing(WindowEvent event) { System.out.println("Fenêtre fermée"); fermer(); }
On peut faire une méthode qui ferme la JFrame courante, à laquelle on fait appel (la méthode, pas la JFrame)
public void fermer() { dispose(); // Ferme la frame courante }
hugo0x
Messages postés
17
Date d'inscription
mardi 27 octobre 2009
Statut
Membre
Dernière intervention
29 octobre 2009
4
27 oct. 2009 à 19:19
27 oct. 2009 à 19:19
huh? Pardon?
HUm, je ne comprend pas tout , bien que je comprenne l'idée générale, ce que je comprend moins, c'est pourquoi ce code ne marche pas...
Tout m'a l'air bon!!! si mes petites notes sont fausses, c'est que je n'ai pas compris mon propre code o_O
Merci d'avance :
HUm, je ne comprend pas tout , bien que je comprenne l'idée générale, ce que je comprend moins, c'est pourquoi ce code ne marche pas...
ActionListener play = null; // la c'est bon j'initialise mon listener jbPlay.addActionListener(this); //la je le place ActionListener close = null; // pareil jbClose.addActionListener(this); // pareil setSize(907,832); // taille de la fenetre, on s'en passe setResizable(false); // pas important setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // normal setVisible(true); // heuresement ^^ } public void actionPerformed(ActionEvent event) { // la on crée notre méthode qui récupère tout ce qui est lié aux action de l'utilisateur if(event.getSource() == jbPlay) { // si l'action vient de lobjet jbplay System.out.print("jeuu"); // tu fais ca } if(event.getSource() == jbClose) { // mais si ca vient de jbclose System.out.print("test"); // affiche ça ! } } public void jeu(){ jeu j = new jeu("Doode"); }}
Tout m'a l'air bon!!! si mes petites notes sont fausses, c'est que je n'ai pas compris mon propre code o_O
Merci d'avance :
biboo_
Messages postés
1249
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
14 mars 2012
106
28 oct. 2009 à 10:12
28 oct. 2009 à 10:12
Au fait, ça te met quoi comme erreur?
biboo_
Messages postés
1249
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
14 mars 2012
106
28 oct. 2009 à 09:48
28 oct. 2009 à 09:48
Cette portion du code :
ne sert absolument à rien.
Tes références pointent vers null et ne sont jamais utilisées.
Ne le prends pas mal mais si tu n'as pas compris ce que j'ai écrit, c'est que tu n'as pas compris jusqu'au bout l'utilisation des Listeners, et ça je ne peux pas faire grand chose. :/
ActionListener play = null; // la c'est bon j'initialise mon listener ActionListener close = null; // pareil
ne sert absolument à rien.
Tes références pointent vers null et ne sont jamais utilisées.
Ne le prends pas mal mais si tu n'as pas compris ce que j'ai écrit, c'est que tu n'as pas compris jusqu'au bout l'utilisation des Listeners, et ça je ne peux pas faire grand chose. :/
hugo0x
Messages postés
17
Date d'inscription
mardi 27 octobre 2009
Statut
Membre
Dernière intervention
29 octobre 2009
4
28 oct. 2009 à 13:39
28 oct. 2009 à 13:39
La seule chose je ne comprend pas c'est la windows listener... Je veux que lorsqu'on clique sur mon autre bouton cela ferme la fenêtre, je n'ai pas compris pourquoi tu comptes mettre un écouteur sur la fenêtre elle même...
Et puis le truc, c'est que ca ne me met pas d'erreur...
Il ne se passe juste rien lors de mes clics sur mes boutons.
fin du code :
Et puis le truc, c'est que ca ne me met pas d'erreur...
Il ne se passe juste rien lors de mes clics sur mes boutons.
fin du code :
public fenetre (String titre) { //création de la méthode constructeur setTitle (titre); Container contenu = getContentPane(); JButton jbPlay = new JButton("", new ImageIcon("jouer.gif")); JButton jbClose = new JButton("", new ImageIcon("exit.gif")); jbPlay.setFocusPainted(false); jbPlay.setBorderPainted(false); // ces trois lignes enelvent la bordure du boutton jbPlay.setContentAreaFilled(false); jbClose.setFocusPainted(false); jbClose.setBorderPainted(false); // ces trois lignes sont les meme que la haut :) jbClose.setContentAreaFilled(false); contenu.setLayout(null); JLabel label = new JLabel(); Image image = Toolkit.getDefaultToolkit().createImage("background.gif");// nouveau JLabel backgound label.setIcon(new ImageIcon(image)); contenu.add(jbPlay, 0); contenu.add(jbClose, 1); contenu.add(label, 2); label.setBounds(0, 0, 900, 800); jbPlay.setBounds(50, 445, 850, 78); jbClose.setBounds(50, 640, 158, 50); jbPlay.addActionListener(this); jbClose.addActionListener(this); setSize(907,832); setResizable(false); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent event) { if(event.getSource() == jbPlay) { System.out.print("jeuu"); } if(event.getSource() == jbClose) { System.out.print("test"); } } public void jeu(){ jeu j = new jeu("Doode"); }}