Salve ragazzi, volevo sottoporvi una questione per ora irrisolta. Sto usando la classe Popup factory e Popup per poter lancare un popup con all'intenro componente al click del mouse su un pulsante che si trova in un JFrame. Ora il codice funziona bene solo che vorrei riuscire a nascondere il popup cliccando con il mouse fuori al pulsante che attiva il popup ma non riesco a realizzare questa funzione. Questo è il codice in questione:
public class Prova extends JPanel{
private MyComponent component;
private JButton btn;
private PopupFactory factory;
public Prova() {
component= new MyComponent();
factory = PopupFactory.getSharedInstance();
btn = new JButton("getPopup");
btn.addMouseListener(new MouseListener(){
Popup popup = null;
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
if(popup!=null)
popup.hide();
}
public void mouseReleased(MouseEvent e) {
int x = e.getXOnScreen();
int y = e.getYOnScreen();
popup = factory.getPopup(null, cal, x, y);
popup.show();
System.out.println(x);
System.out.println(y);
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
myinitComponets();
}
private void myinitComponets() {
add(btn);
}
public static void main(String[] args){
JFrame a = new JFrame();
a.setSize(600,600);
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.add(new Prova());
a.setVisible(true);
}
}
MyComponent può essere una qualsiasi classe che estende un compomente swing.
Grazie per l'eventuale aiuto.

Rispondi quotando