Newsgroup: it.comp.java
Titolo: JPopupMenu (Swing)

Spero che oltre alle decine di impantanati nell'apprendimento di Java, ci
sia
qualche persona un po' piu' esperta che segue il NG.
Il problema:
Ho un menu' popup, di quelli che appaiono premendo il pulsante destro del
mouse.
Per farlo apparire basta chiamare il metodo show(Invoker i, x,y) della
classe
JPopupMenu.
Il problema e' forzarne la chiusura. Il fatto e' che gli eventi del mouse
dell'Invoker
li gestisco io, e voglio che il menu' si chiuda ad un mio comando.
Come posso chiudere sto benedetto menu?
Si noti che distruggendo il JpopupMenu si perde il controllo degli eventi
del mouse
dell'invoker fino a quando non si verifica un evento che fa chiudere
normalmente il popupmenu
(ad esempio un click fuori dall'Invoker).
Giulio

 Come posso chiudere sto benedetto menu?
Mah, premesso che ho iniziato con Java da neanche una settimana,
io per lo stesso problema ho usato popUpMenu.setVisible(false);
Non so se e` La Cosa Giusta(tm), pero` funziona.
-- 
Cosi` e`, se *mi* pare.                                      _/Davide\_
                                                             \Alberani/


Ehila' Davide, e benvenuto. 
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/


Purtroppo la  soluzione non e' cosi' semplice:
setVisible(false) chiude il menu, ma non lo distrugge. Questo significa che
non puo' tornare il controllo all'Invoker, controllo che ritorna solo dopo
aver clickato fuori da esso, o aver selezionato una voce del menu.
Servirebbe un metodo fratello del metodo show() che permetta di chiudere il
menu (lo stesso metodo che viene chiamato da chissa' chi per chiuderlo se si
 verifica uno dei seguenti eventi:
1) Utente seleziona una voce del menu.
2) Utente clickca fuori dal menu e fuori dal JComponent Invoker (per
intenderci quello passato al
    metodo show().
E' probabile che a me setVisible() non ritorni il controllo all'Invoker,
cosa che mi aspetterei visto che funziona
cosi' per JFrame, JDialog ecc..., perche' l'Invoker e' un java bean che
estende un JComponent in maniera
particolare. Comunque gli eventi del mouse sul bean li gestisco io. Quello
che devo fare e':
L'utente cliccka -> appare il menu.        show(bean, x, y)
L'utente rilascia -> scompare il menu     setVisible(false)
MA...
L'utente riclicka...  ->  show(bean,x,y) non fa nulla e setVisible(true) non
fa nulla...
perche'? Fose perche' setVisible(false) non va bene...
Giulio

 Ehila' Davide, e benvenuto. 
Ehi, ci tengo a precisare che con Java mi ci hanno costretto (anzi,
posso dire "viva Python" in questo gruppo? ;-)
Hmmm... meglio di no visto che confido molto in questo newsgroup
per le prossime settimane :-)
Ciao,


 Servirebbe un metodo fratello del metodo show()
Sparo la mia vaccata pomeridiana: tentare con un remove(popUp) nel
Component/Container che ha invocato il menu?





 Ho un menu' popup... Il problema e' forzarne la chiusura.
Usa il metodo setVisible(false) di JComponent.
--
Ciao. Leonardo 
bos...@uno.it
 
www.uno.it/utenti/tetractys

per le prossime settimane :-)
Puoi dare un'occhiata alla FAQ a 
http://space.tin.it/computer/csadun


 Puoi dare un'occhiata alla FAQ a 
http://space.tin.it/computer/csadun
Pensa che bravo bimbo: lo avevo gia` fatto prima di intervenire
qui :-)
Ho vergogna di me...,


qui :-)
Eheh buon sangue non mente. ;-)
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/