Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 70 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Aidez-moi!

 
n°9591
LaChoupine​tte
Profil : Jeune recrue
Posté le 20-07-2004 à 15:19:45  profilanswer
 

Bonjour !
 
J' ai un petit probleme avec une JApplet
 

Code :
  1. import org.netbeans.lib.awtextra.*;
  2. import java.awt.*;
  3. //import java.applet.*;
  4. import java.awt.image.*;
  5. import javax.swing.*;
  6. import java.awt.event.*;
  7. import javax.swing.event.*;
  8. public class Carte extends JApplet /*implements Runnable*/implements MouseListener{
  9. private Thread tr;
  10. private Image base;
  11. private Image affiche;
  12. private static int h = 500;
  13. private static int w = 400;
  14. private static int longueurcarte = 1365;
  15. private static int largeurcarte = 1952;
  16. ImageIcon point  ;
  17. private boolean modif;
  18. private int actuelx, actuely, actuelw, actuelh;
  19. private int count=0;
  20. private JPanel jP1,jP2,jP3;
  21. private JLabel jL1,jL2,jL3,jL4,jL5,jL6,jL7;
  22. private JButton jB1,jB2;
  23. private JLabel [] tab;
  24. private int cooX[];
  25. private int cooY[];
  26. public void init()
  27. {
  28.  System.out.println("dans init()" );
  29.  tab = new JLabel [2];
  30.  tab[0]= new JLabel("a" );
  31.  tab[1]= new JLabel("b" );
  32.  base = getImage(getDocumentBase(),"Creteil.jpg" );
  33.  jP1 = new JPanel();
  34.  jP2 = new JPanel();
  35.  jP3 = new JPanel();
  36.  try{
  37.  ImageIcon ouest = new ImageIcon("arrow.big.left.jpg" );
  38.  ImageIcon est   = new ImageIcon("arrow.big.right.jpg" );
  39.  ImageIcon nord  = new ImageIcon("arrow.big.up.jpg" );
  40.  ImageIcon sud   = new ImageIcon("arrow.big.down.jpg" );
  41.   point   = new ImageIcon("rouge.jpg" );
  42.  jL1 = new JLabel(nord);
  43.  jL2 = new JLabel(est);
  44.  jL3 = new JLabel(sud);
  45.  jL4 = new JLabel(ouest);
  46.  jL7 = new JLabel(point);
  47.  }
  48.  catch(Exception e)
  49.  {
  50.   jL1 = new JLabel("O" );
  51.   jL2 = new JLabel("N" );
  52.   jL3 = new JLabel("E" );
  53.   jL4 = new JLabel("S" );
  54.  }
  55.  jL1.setEnabled(true);
  56.  jL2.setEnabled(true);
  57.  jL3.setEnabled(true);
  58.  jL4.setEnabled(true);
  59.  jL5 = new JLabel("Résultat de la recherche" );
  60.  jL6 = new JLabel("ici" );
  61. // jL7 = new JLabel("là" );
  62.  jB1 = new JButton("Zoom +" );
  63.  jB2 = new JButton("Zoom -" );
  64.  Container c = getContentPane();
  65.  jP1.setBackground(Color.blue);
  66.  jP2.setBackground(Color.white);
  67.  c.setLayout(new AbsoluteLayout());
  68.  //jP1.setSize(500,50);
  69.  c.add(jP1,new AbsoluteConstraints(0,0,500,50));
  70.  c.add(jP2,new AbsoluteConstraints(0,50,500,400));
  71.  c.add(jP3,new AbsoluteConstraints(0,450,500,100));
  72.  jP1.add(jB1);
  73.  jP1.add(jB2);
  74.  jP2.setLayout(new AbsoluteLayout());
  75.  //System.out.println("miliue de init()" );
  76.  jP2.add(jL1,new AbsoluteConstraints(236,5,28,28));
  77.  jP2.add(jL2,new AbsoluteConstraints(466,186,28,28));
  78.  jP2.add(jL3,new AbsoluteConstraints(236,366,28,28));
  79.  jP2.add(jL4,new AbsoluteConstraints(5,186,28,28));
  80.  jP2.add(jL6,new AbsoluteConstraints(100,100,20,20));
  81.  jP2.add(jL7,new AbsoluteConstraints(250,250,10,10));
  82.  jP3.add(jL5);
  83.  jP3.setBackground(Color.pink);
  84.  zoom(1,1,largeurcarte,longueurcarte);
  85.  /*
  86.  affiche = base;
  87.  
  88.  tr = new Thread();
  89.  tr.start();*/
  90.  System.out.println("sort de init()" );
  91.  jL1.addMouseListener(this);
  92.  jL2.addMouseListener(this);
  93.  jL3.addMouseListener(this);
  94.  jL4.addMouseListener(this);
  95.  jB1.addMouseListener(this);
  96.  jB2.addMouseListener(this);
  97.  dessinePoint();
  98. }
  99. public void mouseClicked(MouseEvent e){
  100.  if(e.getSource() == jL1){
  101.   deplace(1);
  102.  }
  103.    if(e.getSource() == jL2){
  104.   deplace(4);
  105.  }
  106.    if(e.getSource() == jL3){
  107.   deplace(3);
  108.  }
  109.    if(e.getSource() == jL4){
  110.   deplace(2);
  111.  }
  112. }
  113. public void mousePressed(MouseEvent e){
  114.  Double t1, t2;
  115.  if(e.getSource() == jB1)
  116.  { 
  117.     
  118.      if(count<10)
  119.      {
  120.       count++;
  121.    System.out.println("zoom +" );
  122.    t1 = new Double(actuelw*0.8);
  123.    t2 = new Double(actuelh*0.8);
  124.    zoom(actuelx,actuely,t2.intValue(),t1.intValue());
  125.   }
  126.  }
  127.  if(e.getSource() == jB2)
  128.  { 
  129.      if(count>0)
  130.      {
  131.       count--;
  132.    System.out.println("zoom -" );
  133.    t1 = new Double(actuelw/0.8);
  134.    t2 = new Double(actuelh/0.8);
  135.    zoom(actuelx,actuely,t2.intValue(),t1.intValue());
  136.   }
  137.  }
  138. }
  139. public void mouseReleased(MouseEvent e){}
  140. public void mouseExited(MouseEvent e){}
  141. public void mouseEntered(MouseEvent e){
  142.  if(e.getSource() == jL1){
  143.   deplace(1);
  144.  }
  145.  if(e.getSource() == jL2){
  146.   deplace(4);
  147.  }
  148.  if(e.getSource() == jL3){
  149.   deplace(3);
  150.  }
  151.  if(e.getSource() == jL4){
  152.   deplace(2);
  153.  }
  154. }
  155. public void run()
  156. {
  157.  while(true)
  158.  {
  159.   if(modif)
  160.   {
  161.    //dessinePoint();
  162.    modif=false;
  163.   }
  164.  }
  165. }
  166. public void onafaitdesmodif()
  167. {
  168.  modif=true;
  169. }
  170. public void zoom(int x, int y, int height, int width)
  171. {
  172.  ImageFilter cif;
  173.  ImageProducer improd;
  174.  System.out.println("dans zoom (1)" );
  175.  improd = base.getSource();
  176.  System.out.println("dans zoom (2)" );
  177.  cif = new CropImageFilter(x, y, height, width);
  178.  affiche = createImage(new FilteredImageSource(improd, cif));
  179.   System.out.println("dans zoom (3)" );
  180.  actuelx=x;
  181.  actuely=y;
  182.  actuelh = height;
  183.  actuelw = width;
  184.  System.out.println("dans zoom (4)" );
  185.  dessinePoint();
  186.  paint(this.getGraphics());
  187. }
  188. public void deplace(int direction)
  189. {
  190.  int aw=actuelw/10;
  191.  int ah=actuelh/10;
  192.  if((direction==1) && (actuely>ah)) //hau
  193.  {
  194.   zoom(actuelx, actuely -ah, actuelh, actuelw);
  195.  }
  196.  else if((direction==3) && (actuely<longueurcarte-ah)) //bas
  197.  {
  198.   zoom(actuelx, actuely +ah, actuelh, actuelw);
  199.  }
  200.  else if((direction==2) && (actuelx>aw)) //gauche
  201.  {
  202.   zoom(actuelx -aw , actuely, actuelh, actuelw);
  203.  }
  204.  else if((direction==4) && (actuelx<largeurcarte-actuelw)) //droite
  205.  {
  206.   zoom(actuelx + aw, actuely, actuelh, actuelw);
  207.  }
  208. }
  209. public void repeindre(JComponent j)
  210. {
  211.  j.repaint();
  212. }
  213. public void paint(Graphics g)
  214. {
  215.  Graphics g2=jP2.getGraphics();
  216.  jP1.paint(jP1.getGraphics());
  217.  jP2.paint(g2);
  218.  repeindre(jL6);
  219.  for(int i=0;i<tab.length;i++)
  220.  {
  221.   try
  222.   {
  223.    tab[i].setVisible(true);
  224.    repeindre(tab[i]);
  225.   }
  226.   catch(Exception e){}
  227.  }
  228.  jL7.repaint();
  229.  jP3.paint(jP3.getGraphics());
  230.  g2.drawImage(affiche, 38, 38, h-76, w-76, this);
  231.  for(int i=0;i<tab.length;i++)
  232.  {
  233.   try
  234.   {
  235.    tab[i].setVisible(true);
  236.    repeindre(tab[i]);
  237.   }
  238.   catch(Exception e){}
  239.  }
  240. }
  241. private void dessineLocation(int x, int y, int numero)
  242. {
  243.  int t=5;
  244.  //System.out.println((x>actuelx) + "  "+ (x< actuelx+actuelh) +"&&" +  (y>actuely)+" &&"+ (y< actuely+actuelw));
  245.  if((x>actuelx) && (x< actuelx+actuelh) && (y>actuely) && (y< actuely+actuelw))
  246.  {
  247.   //le point est dans la carte
  248.   int calculx, calculy;
  249.   calculx = x*h/actuelw + actuelx;
  250.   calculy = y*w/actuelh + actuely;
  251.   System.out.println(x + " --- " + h + " --- " + actuelw + " --- " + calculx);
  252.   //tab[numero]= new JLabel("a" );
  253.   //tab[numero].setVisible(true);
  254.   //jP2.remove(tab[numero]);
  255.   System.out.println("avant placage point: "+numero);
  256.   jP2.add(tab[numero],new AbsoluteConstraints(calculx,calculy,10,10));
  257.   System.out.println("apres placage point: "+numero);
  258.   //tab[numero].validate();
  259.   //tab[numero].setVisible(true);
  260.   tab[numero].paintImmediatly();
  261.  }
  262.  else
  263.  {
  264.  }
  265. }
  266. public void dessinePoint()
  267. {
  268.  int nb=2;
  269.  // récupération des X et Y
  270.  cooX= new int[nb];
  271.  cooY= new int[nb];
  272. //  tab = new JLabel [nb];
  273.  cooX[0]=200;cooY[0]=200;
  274.  cooX[1]=150;cooY[1]=300;
  275.  // pour chaque, utilisation de dessineLocation
  276.  for(int i=0; i<nb;i++)
  277.  {
  278.   System.out.println(i);
  279.   dessineLocation(cooX[i],cooY[i],i);
  280.  }
  281.  // repeindre
  282. }
  283. }


 
Le problème est le suivant : au début, tout s'affiche bien. Mais ensuite, à chaque paint(), l'image se remet pardessus les JLabel tab... Quelqu'un pourrait me dire comment faire svp?

n°9595
ollone
Part of the 'One brothers
Profil : Vieux de la vieille
Posté le 20-07-2004 à 18:53:27  profilanswer
 

On ne peut pas tester ton code à moins d'avoir le package org.netbeans.lib.awtextra.
Alors peut-être peux-tu nous expliquer textuellement ton code ?


---------------
C'est naturel que les filles soient plus belles, et les garçons plus cons ^^ [un peu bonobo sur les bords]
n°9596
LaChoupine​tte
Profil : Jeune recrue
Posté le 21-07-2004 à 00:53:19  profilanswer
 


oui c vrai j avais oublié ce petit détail.
 
Alors en fait je realise un site du style mappy !
Donc l applet contient ma carte de Creteil ( on peut zoomer dessus et aussi ce depalcer ) :
 
base = getImage(getDocumentBase(),"Creteil.jpg" );  
 
Dessus je veux afficher des points en fonction de mes differentes recherche dans une base de données.
 
Lorsque je place ces points dans la methode init() ils se placent bien au bon endroit.
 
Mais lorsque par exemple je zoom les points doivent s afficher avec d autres coordonnées :
 
Le probleme arrive avec la methode dessineLocation(int x, int y, int numero) :
 
 jP2.add(tab[numero],new AbsoluteConstraints(calculx,calculy,10,10));  
 
je veux ici mettre mes label a d autres coordonnées et bizarrement les coordonnéees sont bonnes mais le point ne s affiche pas a ces coordonnées.  
 
J' ai eu beaucoup de mal avec les paint(). Peut etre que c est un truc dans ce genre ! Enfin je sais pas. Y a pitet une subtilité que j ai pas saisi dans les Component lol .
 
 

n°9600
ollone
Part of the 'One brothers
Profil : Vieux de la vieille
Posté le 21-07-2004 à 12:26:03  profilanswer
 

Bon, alors voilà ce que j'ai compris :
En fait dans ta méthode dessineLocation(...) tu fais à nouveau un jP2.add(...) or ils sont déjà dans le JPanel; donc soit tu les déplaces, soit tu les réajoutes après suppression.
Pour plus de simplicité, je te conseille la deuxième solution, et donc tu peux te contenter de rajouter jP2.remove(tab[numero]); juste avant de le rajouter dans la méthode dessineLocation(...).


---------------
C'est naturel que les filles soient plus belles, et les garçons plus cons ^^ [un peu bonobo sur les bords]
n°9608
LaChoupine​tte
Profil : Jeune recrue
Posté le 21-07-2004 à 14:20:56  profilanswer
 

     
 j' ai deja essayé de mettre un remove() avant mais cela ne marche pas. Les coordonnées de mon label sont differends mais pourtant l'affichage reste aux coordonnées que j ai mis lors du premier appel de la methode dessinePoint() appelée dans init() .


Aller à :
Ajouter une réponse