Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Utiliser un JLabel Dynamique dans un event du meme JLabel [ Multimédia / Java2D ] (minosubb)

jeudi 10 juillet 2008 à 15:06:58 | Utiliser un JLabel Dynamique dans un event du meme JLabel

minosubb

Bonjour

J'ai crée une Map composée de 4 couches de 121 JLabel (pour l'instant, c'est ce que j'ai trouve pour gerer les passages de perso devant et derriere des bouts de decors.)

Lorsque je passe la souris sur un de ces JLabel, je voudrais reussir a recuperer le nom de l'image qui est dedans.
A terme, je voudrais reussir a mettre dans une partie de l'ecran des icones 40x40 et en clickant dessus, puis sur un des JLabel de la map afin de donner l'icone a cette derniere, mais surtout pouvoir sauvegarder le nom de l'image qui a ete copié dans une base. Ici pour le 'fond' , il s'agit de 'herbe.png'
Mais la ou je bloque, c'est que je sais le faire quand le JLabel est nommé, mais ici, j'ai la reponse dans le mouseEntered pour la variable niveau : Cannot refer to a non-final variable niveau inside an inner class defined in a different method
meme chose pour x et y

J'attend vos suggestion avec plaisir.

Merci d'avance.


import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class Map
{
 private JLabel[][][] Map = new JLabel[4][11][11];
 private String NomImageJLabel;
 // plan des objets où le perso passera derrière
 private final int devant = 0;
 // plan où les personnages se déplaceront ici
 private final int milieu = 1;
 // plan ou les objets seront posés au sol
 // et les persos marcheront dessus
 private final int derriere = 2; 
 // plan ou sera le fond de l'image, herbes, routes, .....
 private final int fond = 3;
 private final int Originex = 1;
 private final int Originey = 1;
 private final int Taillex = 40;
 private final int Tailley = 40;
 private final int xMax = 11;
 private final int yMax = 11;

 private final int niveauMapMax = 4;

 public Map()
 {
  String image;
  for (int niveau = 3; niveau > -1; niveau--)
  {
   for (int x = 0; x < xMax; x++)
   {
    for (int y = 0; y < yMax; y++)
    {
     Map[niveau][x][y] = new JLabel();
     Map[niveau][x][y].setBounds(new Rectangle(Originex
       + (x * Taillex), Originey + (y * Tailley), Taillex,
       Tailley));
     Map[niveau][x][y].setVisible(true);
     try
     {
      if (niveau == fond)
      {
       image = "herbe.png";
       Map[niveau][x][y].setIcon
       (new ImageIcon(ImageIO.read(new File("./Images/" + image)),image));
      }
      else
      {
       Map[niveau][x][y].setIcon(null);
      }
     }
     catch (IOException e)
     {
      e.printStackTrace();
     }
     Map[niveau][x][y].addMouseListener(new java.awt.event.MouseAdapter()
     {
      public void mouseEntered(java.awt.event.MouseEvent e)
      {
         if (Map[niveau][x][y].getIcon() != null)
         {
            NomImageJLabel = Map[niveau][x][y].getIcon().toString();
            
System.out.println(NomImageJLabel);
         }
     });
    }
   }
  }
 }


jeudi 10 juillet 2008 à 17:17:33 | Re : Utiliser un JLabel Dynamique dans un event du meme JLabel

minosubb

Réponse acceptée !
J'ai trouve comment passer les variables au mouseEntered, en les declaration int du for par des private juste apres public class Map {

Mais il y a beau avoir eu un Map[niveau][x][y]].addMouseListener(new java.awt.event.MouseAdapter()

chaque fois que je passe la souris devant le JLabel, niveau = -1 , x=11, y=11, et ce pour tous les JLabel. ce qui entraine que Map[niveau][x][y].getIcon() est hors tableau java.lang.ArrayIndexOutOfBoundsException: -1

Je continu a chercher, mais si vous avez une idée, une remarque, je suis tout ouïe.

Merci

mercredi 16 juillet 2008 à 15:09:19 | Re : Utiliser un JLabel Dynamique dans un event du meme JLabel

minosubb

Réponse acceptée !
J'ai formalise mon soucis dans un applet qui ajoute les jLabels en question dans ce Zip. Mon applet



Cette discussion est classé dans : int, private, jlabel, niveau, map


Répondre à ce message

Sujets en rapport avec ce message

Erreur d'execution: java.lang.NullPointerException [ par amjad ] A la compilation d'un projet java3D j'obtient le message d'erreur suivant :Exception in thread "main" java.lang.NullPointerException at javax.vecmath aide explication paint (tableaux de Hash) [ par Bilouz ] Bon voilà je viens de choper un pgm sympa style paint, juste pour dessiner et effacer le contenu.Par contre je ne comprends pas du tout comment foncti layout et reactualisation... [ par alexglvr ] Bonjour,je suis en train de faire un prg en java avec une interface utilisateur. une JFrame (VisionPG1) contient une TabbedPanel (TP). Cette TabbedPan Utilisation de FocusTraversalPolicy [ par kissmytoe ] J'ai fait un petit programme et j'aimerais bien que le focus fonctionne. J'ai recherché un tas d'example de la classe FocusTraversalPolicy pour essayé [Swing] Comment regénérer un JPanel [ par coinki ] Bonjour,J'ai un JPanel qui suivant une certaine valeur contient des composants différents. Lorsque j'appuie sur un bouton, je voudrai que ça passe de dessin graphique 2d [ par huongthuy ] Bonjour tout le monde! je suis étudiant.j'ai un projet.Le projet demande les fonctions:la fonction linéaire y = ab, la fonction affine y = ax+b, <td c afficher la position du curseur [ par fatimazahrazaidi ] salut, je cherche a determiner la position du curseur sur une image une fois que je click sur une position le curseur reste tjr a sa place et les coor Matrice probleme d'incrementation [ par juliox24 ] Bonjour,j'ai un petit problème pour définir ma matrice Voici mon code :public class test {    private int cases[][];private int posx=0;private int pos parcourir un Hashtable [ par envisat ] Bonjour à tous.... J'ai besoin d'un coup de pouce SVPje suis entrain de faire un projet scolaire et je dois utiliser un hastable pour mette des donné Help... Jeu de battleship en java... [ par joedalton1979 ] Bonjour... Nous sommes vendredi soir 8hpm et je dois remettre ce travail lundi matin.. Voici ce qui devait etre fait... Un jeu de battleship, qui ce j


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.