ActionListener ou MouseListener (JAVA) ?
Résolu/Fermé
dave jnr
Messages postés
36
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
5 février 2014
-
23 mars 2011 à 17:51
dave jnr Messages postés 36 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 5 février 2014 - 25 mars 2011 à 00:12
dave jnr Messages postés 36 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 5 février 2014 - 25 mars 2011 à 00:12
A voir également:
- ActionListener ou MouseListener (JAVA) ?
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Java jre - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Mobile
2 réponses
Utilisateur anonyme
24 mars 2011 à 02:15
24 mars 2011 à 02:15
Salut,
En dehors de paint(Graphics g) g n'est pas connu.
Ce n'est pas dans le listener que tu dois forcer la couleur de la lampe, mais dans paint(Graphics g) :
Si c'est ouvert >>>> blanc sinon >>>> jaune
Dans le listener (je te dirai comment savoir quel bouton est cliqué), il suffira (par exemple) de forcer un boolean (par exemple private boolean ferme = false; en variable de classe pour qu'il soit visible partout) à true si on a cliqué sur ON ou à false si on a cliqué sur OFF suivi de repaint();...
Et dans paint(Graphics g) if fermé >>>> jaune sinon >>>> blanc
Faire de même pour l'interrupteur sans oublier de dessiner aussi l'interrupteur fermé.
Commence par ajouter "super" dans paint:
Le listener maintenant:
N'hésite pas si tu as besoin de plus de précisions...
Cordialement,
Dan
En dehors de paint(Graphics g) g n'est pas connu.
Ce n'est pas dans le listener que tu dois forcer la couleur de la lampe, mais dans paint(Graphics g) :
Si c'est ouvert >>>> blanc sinon >>>> jaune
Dans le listener (je te dirai comment savoir quel bouton est cliqué), il suffira (par exemple) de forcer un boolean (par exemple private boolean ferme = false; en variable de classe pour qu'il soit visible partout) à true si on a cliqué sur ON ou à false si on a cliqué sur OFF suivi de repaint();...
Et dans paint(Graphics g) if fermé >>>> jaune sinon >>>> blanc
Faire de même pour l'interrupteur sans oublier de dessiner aussi l'interrupteur fermé.
Commence par ajouter "super" dans paint:
public void paint(Graphics g) { super.paint(g); //<<<<<<<<<<<<<<<<<<<<<<<<<<< //Arriere plan ....................
Le listener maintenant:
public void actionPerformed(ActionEvent ae) { //JButton action=(JButton)ae.getSource(); Object action = ae.getSource(); if(action==ON) { ................ } else { ............... } repaint(); }
N'hésite pas si tu as besoin de plus de précisions...
Cordialement,
Dan
Utilisateur anonyme
Modifié par danimo le 25/03/2011 à 08:31
Modifié par danimo le 25/03/2011 à 08:31
Heureux de t'avoir rendu service...
Je ne vois pas l'interrupteur ouvert ?
Mais puisque j'ai testé et modifié ton code voici ce qu'il est devenu:
Cordialement,
Dan
Je ne vois pas l'interrupteur ouvert ?
Mais puisque j'ai testé et modifié ton code voici ce qu'il est devenu:
import java.applet.*; import java.awt.Graphics; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CircApplet extends Applet implements ActionListener { JButton ON = new JButton("ON"); JButton OFF = new JButton("OFF"); JButton fin = new JButton("Fin"); private boolean ferme = false; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< public void init() { setLayout(new FlowLayout(FlowLayout.CENTER)); ON.addActionListener(this); add(ON); OFF.addActionListener(this); add(OFF); fin.addActionListener(this); add(fin); } public void paint(Graphics g) { super.paint(g); //Arriere plan setBackground(Color.lightGray); //circuit g.drawLine(150,100,250,100); g.drawLine(300,100,350,100); g.drawLine(150,100,150,250); g.drawLine(350,100,350,250); g.drawLine(150,250,200,250); g.drawLine(250,250,350,250); /* //Interrupteur g.drawLine(250,100,295,78); g.fillOval(248,98,5,5); g.fillOval(298,98,5,5); */ //Interrupteur ouvert g.setColor(Color.blue); if(ferme == false) { g.drawLine(250,100,295,78); } else { //Interrupteur fermé g.drawLine(253,100,297,100); } g.setColor(Color.black); g.fillOval(248,98,5,5); g.fillOval(298,98,5,5); //Ampoule g.drawOval(200,225,50,50); if(ferme == false) g.setColor(Color.white); else g.setColor(Color.yellow); g.fillOval(200,225,50,50); } public void actionPerformed(ActionEvent ae) { //JButton action=(JButton)ae.getSource(); Object action = ae.getSource(); if(action == ON) { ferme = true; repaint(); // JOptionPane.showMessageDialog(null,"Circuit ferme, lampe allumee"); } else if(action == OFF) { ferme = false; repaint(); // JOptionPane.showMessageDialog(null,"Circuit ouvert, lampe eteinte"); } else { if( (action == fin) && (ferme == true) ) { JOptionPane.showMessageDialog(null,"Vous avez oublié d'éteindre la lumière !!!"); repaint(); } else { JOptionPane.showMessageDialog(null," FIN"); CircApplet ca = new CircApplet(); ca.stop(); ca.destroy(); System.exit(0); } } } }
Cordialement,
Dan
dave jnr
Messages postés
36
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
5 février 2014
Modifié par dave jnr le 26/03/2011 à 02:54
Modifié par dave jnr le 26/03/2011 à 02:54
Ton code est vraiment plus complet que le mien!! ^_^
En fait dans mon code je n'ai pas dessiné la tige de l'interrupteur mais elle apparaît lorsque je clique sur ON (Tu as dû le constater sur les images que j'ai postées dans mon commentaire plus haut).
Voici mon code (mon .html est inclus en commentaire) :
import java.applet.*;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*
<APPLET
code="CircApplet.class" width="500" height="400">
</APPLET>
*/
public class CircApplet extends Applet implements ActionListener
{
private boolean ferme = false;
Graphics g;
JButton ON = new JButton("ON");
JButton OFF = new JButton("OFF");
public void init()
{
setLayout(new FlowLayout(FlowLayout.CENTER));
ON.addActionListener(this);
add(ON);
OFF.addActionListener(this);
add(OFF);
}
public void paint(Graphics g)
{
super.paint(g);
//Arriere plan
g.drawLine(150,5,150,15);
g.drawLine(350,5,350,15);
setBackground(Color.lightGray);
//texte
g.drawString("Cliquez sur ON pour allumer, OFF pour éteindre", 125, 50);
//circuit
g.drawLine(150,100,250,100);
g.drawLine(300,100,350,100);
g.drawLine(150,100,150,250);
g.drawLine(350,100,350,250);
g.drawLine(150,250,200,250);
g.drawLine(250,250,350,250);
//Interrupteur
//g.drawLine(250,100,295,78);
g.fillOval(248,98,5,5);
g.fillOval(298,98,5,5);
//Lampe
g.drawOval(200,225,50,50);
g.setColor(Color.white);
g.fillOval(200,225,50,50);
if(ferme==true)
{
g.drawLine(250,100,300,100);
//g.drawLine(295,78,300,100);
g.setColor(Color.yellow);
g.fillOval(200,225,50,50);
}else if(ferme==false)
{
g.setColor(Color.white);
g.fillOval(200,225,50,50);
}
}
public void actionPerformed(ActionEvent ae)
{
//JButton action=(JButton)ae.getSource();
Object action = ae.getSource();
if(action==ON)
{
ferme =true;
}else if(action==OFF)
{
ferme = false;
}
repaint();
}
}
MERCI ENCOR!!
P.S
STP Comment puis je te contacter si j'ai des questions?
En fait dans mon code je n'ai pas dessiné la tige de l'interrupteur mais elle apparaît lorsque je clique sur ON (Tu as dû le constater sur les images que j'ai postées dans mon commentaire plus haut).
Voici mon code (mon .html est inclus en commentaire) :
import java.applet.*;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*
<APPLET
code="CircApplet.class" width="500" height="400">
</APPLET>
*/
public class CircApplet extends Applet implements ActionListener
{
private boolean ferme = false;
Graphics g;
JButton ON = new JButton("ON");
JButton OFF = new JButton("OFF");
public void init()
{
setLayout(new FlowLayout(FlowLayout.CENTER));
ON.addActionListener(this);
add(ON);
OFF.addActionListener(this);
add(OFF);
}
public void paint(Graphics g)
{
super.paint(g);
//Arriere plan
g.drawLine(150,5,150,15);
g.drawLine(350,5,350,15);
setBackground(Color.lightGray);
//texte
g.drawString("Cliquez sur ON pour allumer, OFF pour éteindre", 125, 50);
//circuit
g.drawLine(150,100,250,100);
g.drawLine(300,100,350,100);
g.drawLine(150,100,150,250);
g.drawLine(350,100,350,250);
g.drawLine(150,250,200,250);
g.drawLine(250,250,350,250);
//Interrupteur
//g.drawLine(250,100,295,78);
g.fillOval(248,98,5,5);
g.fillOval(298,98,5,5);
//Lampe
g.drawOval(200,225,50,50);
g.setColor(Color.white);
g.fillOval(200,225,50,50);
if(ferme==true)
{
g.drawLine(250,100,300,100);
//g.drawLine(295,78,300,100);
g.setColor(Color.yellow);
g.fillOval(200,225,50,50);
}else if(ferme==false)
{
g.setColor(Color.white);
g.fillOval(200,225,50,50);
}
}
public void actionPerformed(ActionEvent ae)
{
//JButton action=(JButton)ae.getSource();
Object action = ae.getSource();
if(action==ON)
{
ferme =true;
}else if(action==OFF)
{
ferme = false;
}
repaint();
}
}
MERCI ENCOR!!
P.S
STP Comment puis je te contacter si j'ai des questions?
24 mars 2011 à 14:54
24 mars 2011 à 16:01
Merci mille fois Dan!!
Voici le résultat en images si tu permet :
<img src="http://www.imagebucket.net/bucket/is.php?i=9279&img=CircAppletJava1.jpg" border="0">
<img src="http://www.imagebucket.net/bucket/is.php?i=9280&img=CircAppletJava2.jpg" border="0">