Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA] problemi con il MouseListener

    Buonasera a tutti. Sono alle prime armi con le interfacce grafiche di Java.
    Oggi, cercando di implementare un menu a comparsa quando clicco con il mouse, ho miseramente fallito.
    Sapete spiegarmi dove e perchè sbaglio? Grazie

    codice:
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.net.URL;
    
    import javax.swing.*;
    public class ActionCapiamoleDai{
        private JFrame f;
        private JLabel l;
        private JPopupMenu pm;
        
        public ActionCapiamoleDai() {
            f=new JFrame("Prova");
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setLocation(250,200);
            Panel p1=new Panel();
            Panel p2=new Panel();
            p2.add(new Label("Name:"));
            p2.add(new TextField(20));
            p1.add(p2);        
            Panel p3= new Panel();
            p3.add(new Button("Cancel"));
            JButton b=new JButton("ok");
            p3.add(b);
            p1.add(p3);
    
            
            pm = new JPopupMenu("provaMenu");
            p1.add(pm);
            p1.addMouseListener(new MouseAdapter() { 
                public void mousePressed(MouseEvent me){ 
                showPopup(me); 
                } 
                public void mouseReleased(MouseEvent me){ 
                showPopup(me); 
                }});
            f.add(p1);
            
            f.setSize(320,120);
            f.setVisible(true);
            
        }
        
        
        void showPopup(MouseEvent me) { 
            if (me.isPopupTrigger())
            pm.show(me.getComponent(), me.getX(), me.getY()); 
            } 
        
        
    
        public static void main(String[] args){
            Runnable r=new Runnable(){
                public void run(){
                    new ActionCapiamoleDai();
                }};
                EventQueue.invokeLater(r);}
        
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Di per sé, da Java 5 in poi tutta la logica a più "basso" livello con gli eventi del mouse, isPopupTrigger, ecc... non è più strettamente necessaria per la gestione di un menù di "contesto".
    Da Java 5 infatti tutti i componenti Swing hanno un:

    public void setComponentPopupMenu(JPopupMenu popup)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    P.S. Nel tuo codice innanzitutto

    p1.add(pm);

    non serve assolutamente. Ma il punto cruciale (ed è quello per cui non vedi nulla) è che .... il tuo JPopupMenu è vuoto. Non hai aggiunto degli item (es. JMenuItem). A cosa serve un menù di popup senza item?

    P.S. 2: Non mescolare componenti AWT con quelli Swing.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Interessante. Ad ogni modo sapresti spiegarmi perchè non funziona il metodo che ho implementato io? E' pressochè identico a come spiegato qui: http://www.java2s.com/Code/Java/Swin...aPopupMenu.htm

  5. #5
    Ho appena modificato in
    codice:
            final JPopupMenu pm = new JPopupMenu("Edit");
            JMenuItem item = new JMenuItem("Item Label");
            pm.add(item);
    ma non cambia nulla

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    sorge una domanda: il JPopupMenu è in qualche modo collegato all'architettura del sistema (o meglio alle gestures tipiche del sistema operativo/ambiente): nello specifico, in Windows, lo vedrai spuntare a seguito di click col tasto destro del mouse. Nemmeno col destro succede niente?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.