ActionListener ou MouseListener (JAVA) ?
Résolu
dave jnr
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
dave jnr Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
dave jnr Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- ActionListener ou MouseListener (JAVA) ?
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
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
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
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?
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">