[Java] Détection d'un componentqui passe a setVisible(false)

Détection d'un componentqui passe a setVisible(false) [Java] - Programmation

Marsh Posté le 29-06-2001 à 10:17:55    

J'ai une Gui avec des composants qu'on peut déplacer sur une fenetre(mousedragged) et quand on clique droit sur un composant j'ai un jpopupmenu qui apparait et qui contient deux boutons cliquables.
je voudrais savoir quand le popup disparait. Quand je clique sur un des deux boutons c ok, mais quand je clique ailleurs, ca marche pas, alors que je lui ai pourtant assigné un componentListener(hidden, shown..)
 
voila une partie du code:
 j'espere que c'est compréhensible  
 
public class ListenerComponent implements ListenerMain, ActionListener, java.awt.event.ComponentListener
{
 /* the pointclick when dragg */
 private Point clickPoint;
 private JPopupMenu jpm;
 private JFrame frame;
 private PropertyChangeSupport pcs;
 private java.awt.Font fontMenu;
 
public ListenerComponent(JFrame frame)
 {
  this.frame = frame;
  pcs = new PropertyChangeSupport(this);
  fontMenu = new java.awt.Font("Arial",java.awt.Font.PLAIN, 11);
  jpm = new JPopupMenu();
 }
   
 public void componentHidden(java.awt.event.ComponentEvent e)
 {
  System.out.println("hidden" );
  System.out.println(e.getSource());
  pcs.firePropertyChange(Component.PROPERTY_DISPLAYED, null,java.awt.Color.lightGray);
 }
 public void componentMoved(java.awt.event.ComponentEvent e){ System.out.println(e.getSource());
   System.out.println("moved" ); }
 public void componentResized(java.awt.event.ComponentEvent e){ System.out.println(e.getSource());
   System.out.println("resized" ); }
 public void componentShown(java.awt.event.ComponentEvent e){  System.out.println(e.getSource());
   System.out.println("shown" );}
 
 public void mouseClicked(MouseEvent e)
    {
     if (SwingUtilities.isLeftMouseButton(e))
     {
   Component component = (Component) e.getSource();
   displayProperties(component);
     }
     if (SwingUtilities.isRightMouseButton(e))
  {
   addPropertyChangeListener((Component) e.getSource());
   jpm.addComponentListener(this);
   pcs.firePropertyChange(Component.PROPERTY_DISPLAYED,
 null, new java.awt.Color(192,192,250));

Reply

Marsh Posté le 29-06-2001 à 10:17:55   

Reply

Marsh Posté le 29-06-2001 à 10:33:25    

tu essayer la methode isVisible()  ?
 
boolean isVisible()

Reply

Marsh Posté le 29-06-2001 à 10:35:50    

rectification,
 
après 20 seconde de recher dans la doc api j'ai trouvé ce qui t'avais besoin : isShowing()
 
public boolean isShowing()
Determine if the object is showing. This is determined by checking the visibility of the object and ancestors of the object. Note: this will return true even if the object is obscured by another (for example, it happens to be underneath a menu that was pulled down).
 
 
 
http://java.sun.com/j2se/1.3/docs/api/index.html

Reply

Marsh Posté le 29-06-2001 à 11:17:01    

Ouais merci.
 
Mais c'est pa vraiment ca  que je veux, je veux que ce soit le composant lui-meme qui me dise quand il est plus visible.
je veux a avoir a aller le chercher moi-meme.
 
c pour ca que j'ai pensé a l'interface ComponentListener

Reply

Marsh Posté le 29-06-2001 à 11:50:56    

pour ceux qui veulent voila la réponse
c pas un ComponentListener qu'il faut mais PopupMenuListener !!!
2 heures de perdus pour des conneries!!
pbl réglé en 4 min ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed