Afficher une image e cliquent sur un jlabel

Résolu/Fermé
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016 - 8 mai 2016 à 22:32
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016 - 14 mai 2016 à 21:38
Bonjour, j'ai crée une interface graphique avec swing, j'ai affiché une image dans un Jlabel. je veux que lorsque je clique sur l'image ça m'affichera une autre image, et en cliquant une deuxième fois je reviens à l'image précédente.
voici un bout de code de ce que j'ai fait (ça m'affiche l'image en cliquant un fois, mais pour revenir à l'image précédente ça marche pas)
//l'[/download/telecharger-34085101-alarme alarme] est activé
 final JLabel l3=new JLabel(im3_A);
			 l3.setSize(50,50);
			 l3.setLocation(350, 30);
			 l.add(l3);
		// 
			
			 class Traitement implements MouseListener
			 {
			
			 public void mouseClicked(MouseEvent e){ 
				
				 boolean a=true;
						ImageIcon im3=new ImageIcon("images/alarme.jpg");
						JLabel l31 =new JLabel(im3);
if (a ==true){l3.setIcon(im3);a=false;}
						else {l3.setIcon(im3_A);a=true;}
try {
							Class.forName("oracle.jdbc.driver.OracleDriver");
						    Connection con=DriverManager.getConnection("jdbc:oracle:thin:system/orcl1@localhost:1521:XE","admin","admin");
						    Statement st = con.createStatement();
							String sql="update equipement set etat='désactivé' where nom='alarmeJ' ";
							ResultSet rs=st.executeQuery(sql);
							rs.next();
						} catch (SQLException | ClassNotFoundException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
					
						
						
						
					}

					@Override
					public void mouseEntered(MouseEvent arg0) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void mouseExited(MouseEvent arg0) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void mousePressed(MouseEvent arg0) {
						// TODO Auto-generated method stub
					
					}

					@Override
					public void mouseReleased(MouseEvent arg0) {
						// TODO Auto-generated method stub
						
					}
				
			 }
			 
			 //l'appel
			 Traitement tr=new Traitement();
				 l3.addMouseListener(tr);

Merci à tous et bon courage.
A voir également:

6 réponses

salut,

Je crois que tu dois déclarer le variable "boolean a" Globalement, parce qu’il est toujours "true" a chaque clique de la souris
Le programme n’entre jamais dans la condition : (else{l3.setIcon(im3_A);a=true;} )
0
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016
9 mai 2016 à 23:34
Salut,
j'ai essayé de déclarer a globalement mais ça marche pas, ça m'affiche une erreur et lorsque je l'ai déclaré final ça marche pas encore, comme vous l'avez dit le programme n’entre jamais dans la condition : (else{l3.setIcon(im3_A);a=true;} )
0
Ok

J’ai des questions à propos de ton code :
1. Dans ton code je ne vois pas la création du variable im3_A.
2. Tu à créer JLabel l31 sans l’utilisé pour quoi ?
Pour que je peux vous aider il me faut tout le code de la Class et aussi les Erreurs.

mais tu peux essayer ce code :
//Placer ceci au premier ligne de ta Classe (variable globales):
//---------------------------------------------------------
boolean a=true;
JLabel l1=new JLabel();
l1.setSize(50,50);
l1.setLocation(350, 30);
l.add(l1);"ici je suppose que le variable 'l' est la JForme.??"
ImageIcon im1=new ImageIcon("images/alarme1.jpg"); //alarme1.jpg est la premiere image.
ImageIcon im2=new ImageIcon("images/alarme2.jpg"); //alarme1.jpg est la deuxième image
//---------------------------------------------------------------
class Traitement implements MouseListener
{
public void mouseClicked(MouseEvent e){
if (a ==true){l1.setIcon(im1);a=false;}
else {l1.setIcon(im2);a=true;}
.
.
.
0
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016
11 mai 2016 à 00:37
le code précédent est une partie d'une grande classe (je voulais pas le mettre c'est trop),
j'ai crée une nouvelle classe pour faciliter les testes
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class fen {

	public static void main(String[] args) {
	JFrame f=new JFrame();
	f.setVisible(true);
	  f.setTitle("Domo");
	  f.setLocation(10, 40);
	  f.setSize(1100,700);
	 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
	
	 Container c=f.getContentPane();
	 
	 ImageIcon im3=new ImageIcon("images/[/download/telecharger-34085101-alarme alarme].jpg");
	ImageIcon im3_A=new ImageIcon("images/alarme A.jpg");
	
	final JLabel l=new JLabel(im3);
	 l.setSize(60,60);
	 l.setLocation(350, 30);
	 c.add(l);
	 //---------------------------------------------------------------------------------
	 class traitement implements MouseListener{
			
	      @Override
	       public void mouseClicked(MouseEvent arg0) {
               //
	       boolean a=true;

	       ImageIcon im3=new ImageIcon("images/alarme.jpg");
	    ImageIcon im3_A=new ImageIcon("images/alarme A.jpg");
				
		if (a ==true){l.setIcon(im3_A);a=false;}
		 else {l.setIcon(im3);a=true;}
					 
					
	                      }
				@Override
				public void mouseEntered(MouseEvent arg0) {
					// [/download/telecharger-34065125-todo TODO] Auto-generated method stub
					
				}
				@Override
				public void mouseExited(MouseEvent arg0) {
					// TODO Auto-generated method stub
					
				}
				@Override
				public void mousePressed(MouseEvent arg0) {
					// TODO Auto-generated method stub
					
				}
				@Override
				public void mouseReleased(MouseEvent arg0) {
					// TODO Auto-generated method stub
					
				}
	 }
			    
	    
	traitement tr=new traitement();
	l.addMouseListener(tr);
	
}
}

j'ai essayé de déclarer "boolean a=true;" globalement mais ça marche pas.
0
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016
11 mai 2016 à 23:16
Merci beaucoup, c'est bon j'ai réglé le problème en déclarant tout les variables globalement
0
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016
12 mai 2016 à 00:07
Bonsoir,
j'ai un problème maintenant lorsque j'essaye de modifier la base de données.
Voici la capture qui le montre:


Merci.
0
salut,

c'est bon tu a régler le Pb d’affichage .
pour le Pb de l'erreur sql c'est causé par le type de données que tu reçoit
L’ensemble de données récupérer par ResultSet est un ensemble d’enregistrements est souvent utilisé pour les requêtes de sélection "select" tandis tu utilise la requête de mise a jour "update" donc tu dois utilisé la fonction « executeUpdate(sql) » comme suite :
int up = st.executeUpdate(sql) // up est le nombre de lignes mis a jour.

bonne chance
0
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016
12 mai 2016 à 21:38
salut,
j'ai essayer int up = st.executeUpdate(sql), mais la meme erreur s'affiche (Ensemble de résultats épuisé).
merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Prg9 Messages postés 6 Date d'inscription vendredi 13 mai 2016 Statut Membre Dernière intervention 15 mai 2016
13 mai 2016 à 01:39
Ok,

Premièrement l’appel du driver Oracle et la création de la connexion a la base de donnée a et aussi la création du Statement a chaque clique de la souris est une action non souhaitable, c’est mieux de faire ça dans une autre Class puis les appelles dans ton Class Main a l’aide du constructeur de la Class ou d’un bouton « Connect » par exemple (Notion d’Orienté Objet), ou faire ça simplement d’une manière globale (les crées dans le constructeur de ta Class Main) .
Pour l’erreur « Ensemble de résultats épuisé » c’est comme que je te dis : le retour d’une requête est non supporter par le type du variable utilisé. Donc pour que je puisse t’aider il me faut voir tout le code de ta Class qui contient des requêtes qui interroge la base de donnée.
0
Prg9 Messages postés 6 Date d'inscription vendredi 13 mai 2016 Statut Membre Dernière intervention 15 mai 2016
13 mai 2016 à 01:50
Voici l'exemple d'une Class qui contienne des Méthodes pour la connexion a la base de donnée (Exemple de Postgres comme DataBase) et la création du Statement :

0
mariya2016 Messages postés 30 Date d'inscription dimanche 13 mars 2016 Statut Membre Dernière intervention 19 mai 2016
14 mai 2016 à 21:38
Merci bcp, c'est bon j'ai réglé le problème.
0