Bonjour a tous,
je deviens folle... je dois gérer un panel C contenant des composants graphiques B de ma composition (eux même contiennent plein de A de JPanel, JScrollBar, JLabel...)
bref en fonctionnement normal, j'ai un listener sur des composants A, pour détecter 2clik.
dans un autre fonctionnement (déclenché par l'appui sur F2) je veux permettre a l'utilisateur de bouger les composants graphiques B.
sauf que si biensur l'utilisateur clik sur un des composant A possedant le listener des 2clik je ne récupère plus le clik.... snif

J'ai donc pensé mettre un glassPane pardessus mon panel C dans le cas de l'appui sur F2, j'ai donc ajouter à la JFrame contenant le panel C, un setGlassPane, en lui passant un panel que j'avais préalablement fait un setBound pour qu'il corresponde au panelC, j'avais aussi ajouter les listener sur ce panel, mais malheureusement cela ne fonctionne pas.
je ne rentre jamais dans les listener de mon glassPane....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
  private class MyGlassPane extends JPanel {
    public MyGlassPane() {
      Rectangle r = DesignPanel.this.getBounds();
      System.out.println("MyGlassPane, r = x = " +r.x+", y="+r.y+", wi="+r.width+", hei="+r.height);
      this.setBounds(r);
      addMouseListener(getMouseListener());
      addMouseMotionListener(getMouseMotionListener());
      addKeyListener(getKeyAdapter());
      setOpaque(true);
    }
 
 
    private MouseMotionListener getMouseMotionListener() {
      return new MouseMotionListener() {
 
        public void mouseMoved(MouseEvent event) {
          Point point = event.getPoint();
          Component component = getComponentAt(point);
          System.out.println("DesignPanel,mouseMoved : Component = "+component.getClass().getName());
......
        }
 
        public void mouseDragged(MouseEvent event) {
          System.out.println("DesignPanel,mouseDragged : ************** !! , design =" +design);
...............
        }
 
      };
    }
 
 
    private MouseListener getMouseListener() {
      return new MouseAdapter() {
 
        public void mousePressed(MouseEvent event) {
          if (design) {
            System.out.println("DesignPanel : MousePressed.");
          }
.........
        }
 
 
      };
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
  public void setDesignMode(boolean design) {
    this.design = design;
    if (design) {
      pac7000UI.setGlassPane(new MyGlassPane());
    } else {
      pac7000UI.setGlassPane(null);
    }
  }
avez vous une autre idée ? ou comment faire pour iniber les listener présent sur mes composants ?