Rechercher : dans
Par :

Java écouteurs

Dernière réponse le 28 oct 2009 à 13:39:37 hugo0x, le 27 oct 2009 à 10:58:34 
 Signaler ce message aux modérateurs

Bonjour,
le code ci dessous m'affiche ma fenetre, mon fond, mes bouttons, mais rien ne s'affiche dans la console lorsque je tente de cliquer sur les bouttons, ou de taper quelquechose au clavier...

Merci d'avance

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(play); 
		
		ActionListener close = null;
	    jbClose.addActionListener(close);      
	
		setSize(907,832);
		setResizable(false);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setVisible(true);
	
		
	}

	public void actionPerformed(ActionEvent play) {
		System.out.print("it work !!!");
	}}
Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « Java écouteurs » dans :
Casque audio, écouteurs, casque audio sans fil: comment choisir VoirPour regarder un film en toute tranquillité ou pour écouter de la musique sur un baladeur MP3, on ne va pas utiliser le même casque. Tout ce qu’il faut savoir pour bien choisir son casque. Présentation des produits Les écouteurs Le...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

biboo_, le 27 oct 2009 à 11:27:45

L'erreur vient de là:

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); 

Répondre à biboo_

2

hugo0x, le 27 oct 2009 à 11:59:38

Ho! merci ! merci beaucoup!

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...

Répondre à hugo0x

3

biboo_, le 27 oct 2009 à 12:04: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).

Répondre à biboo_

4

hugo0x, le 27 oct 2009 à 12:30:33

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 :

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");
		
	}}

Répondre à hugo0x

5

biboo_, le 27 oct 2009 à 13:33:38

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:

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?

Répondre à biboo_

6

hugo0x, le 27 oct 2009 à 14:07:42

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):

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..

Répondre à hugo0x

7

biboo_, le 27 oct 2009 à 14:39:46

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):

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
}

Répondre à biboo_

8

hugo0x, le 27 oct 2009 à 19:19:51

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...



		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 :

Répondre à hugo0x

10

biboo_, le 28 oct 2009 à 10:12:09

Au fait, ça te met quoi comme erreur?

Répondre à biboo_

9

biboo_, le 28 oct 2009 à 09:48:31

Cette portion du code :

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. :/

Répondre à biboo_

11

 hugo0x, le 28 oct 2009 à 13:39:37

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 :

	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");	

}}

Répondre à hugo0x