problem z jPopupMenu

0

Witam.
Mam pewien problem z JPopupMenu. Sprawa wygląda tak że stworzyłem sobie swój komponent i w tym komponencie jest jeden główny panel na którym są wyświetlane jeszcze dwa inne panele na zmianę i na jednym z tych paneli są guziki po naciśnięciu których powinno się wyświetlać owe JPopupMenu. Wszystko działało ładnie pięknie do momentu kiedy musiałem stworzyć swój własny event i po dodaniu go do komponentu nagle JPoupMenu przestało się wyświetlać, czy ma ktoś pomysł co może być przyczyną?

0

raczej nikt nie bedzie wiedzial dopoki nie wkleisz kodu...no chyba ze http://pl.wikipedia.org/wiki/Krzysztof_Jackowski_(jasnowidz) ;]

0

Ok oto cały kod klasy komponentu:

public class ZawodnikBean extends javax.swing.JPanel {

//metody własnego Eventa
    //tworzenie listy Listenera
    protected javax.swing.event.EventListenerList ll = new javax.swing.event.EventListenerList();

    //nasłuchiwacz zdarzeń
    public void addMyEventListener (MyEventListener listener){
        ll.add(MyEventListener.class, listener);
    }

    //usuwanie nasłuchiwacza
    public void removeMyEventListener (MyEventListener listener){
        ll.remove(MyEventListener.class, listener);
    }

    //rozgłaszanie zdarzeń
    void fireMyEvent (String typ, int id_zaw, int id_star, int numer_dr){
        MyEvent evt = new MyEvent(this, typ, id_zaw, id_star, numer_dr);
        Object[] listeners = ll.getListenerList();
        for (int i=0; i<listeners.length; i+=2){
            if(listeners[i]==MyEventListener.class){
                ((MyEventListener)listeners[i+1]).MyEventOccured(evt);
            }
        }
    }


    int id_zawodnika;
    JMenu menu1 = new JMenu("Atak");
    JPopupMenu popMenu1 = new JPopupMenu();
    JPopupMenu popMenu2 = new JPopupMenu();
    JPopupMenu popMenu3 = new JPopupMenu();
    JPopupMenu popMenu4 = new JPopupMenu();
    JPopupMenu popMenu5 = new JPopupMenu();
    JMenuItem atak_punktowy = new JMenuItem("punktowy");
    JMenuItem atak_autowy = new JMenuItem("autowy");
    JMenuItem atak_blok_aut = new JMenuItem("blok-aut");
    JMenuItem atak_w_siatke = new JMenuItem("w siatke");
    JMenuItem blok_punktowy1 = new JMenuItem("punktowy");
    JMenuItem blok_autowy1 = new JMenuItem("autowy");
    JMenuItem blok_wyblok1 = new JMenuItem("wyblok");
    JMenuItem blok_punktowy2 = new JMenuItem("punktowy");
    JMenuItem blok_autowy2 = new JMenuItem("autowy");
    JMenuItem blok_wyblok2 = new JMenuItem("wyblok");
    JMenuItem blok_punktowy3 = new JMenuItem("punktowy");
    JMenuItem blok_autowy3 = new JMenuItem("autowy");
    JMenuItem blok_wyblok3 = new JMenuItem("wyblok");
    JMenuItem zagrywka_ass = new JMenuItem("ass serwisowy");
    JMenuItem zagrywka_autowa = new JMenuItem("autowa");
    JMenuItem zagrywka_w_siatke = new JMenuItem("w siatke");
    JMenuItem zagrywka_punktowa = new JMenuItem("punktowa");
    JMenuItem przyjecie_perfekcyjne = new JMenuItem("perfekcyjne");
    JMenuItem przyjecie_blad = new JMenuItem("błąd");
    JMenuItem przyjecie_dobre = new JMenuItem("dobre");
    JMenuItem obrona_blad = new JMenuItem("zła (błąd obrony)");
    JMenuItem obrona_dobra = new JMenuItem("dobra");
    private Object zawodnik;
    Boolean wybrany=false;
    int id_starego=0;
    int numer_druzyny=0;
    String nazwisko;
    int numer;
    int id_rodzaju_zdarzenia;
    TitledBorder tl = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK), "Punkty");

    /** Creates new form ZawodnikBean */
    public ZawodnikBean() {
        initComponents();
        Cofnij.setVisible(false);
        jPanel1.setVisible(false);
        jPanel2.setVisible(true);
        tl.setTitleJustification(TitledBorder.CENTER);
        Punkty.setBorder(tl);
        numer_koszulki.setForeground(Color.BLUE);
    }

    public ZawodnikBean(int id_zawodnika, Object zawodnik, String nazwisko, int numer, int id_rodzaju_zdarzenia, JButton Atak, JButton Blok, JButton Obrona, JButton Przyjecie, JLabel Punkty, JButton Zagrywka, JButton jButton1, JComboBox jComboBox1, JLabel jLabel1, JPanel jPanel1, JPanel jPanel2, JLabel nazwisko_zawodnika, JLabel numer_koszulki) {
        this.id_zawodnika = id_zawodnika;
        this.zawodnik = zawodnik;
        this.nazwisko = nazwisko;
        this.numer = numer;
        this.id_rodzaju_zdarzenia = id_rodzaju_zdarzenia;
        this.Atak = Atak;
        this.Blok = Blok;
        this.Obrona = Obrona;
        this.Przyjecie = Przyjecie;
        this.Punkty = Punkty;
        this.Zagrywka = Zagrywka;
        this.jButton1 = jButton1;
        this.jComboBox1 = jComboBox1;
        this.jLabel1 = jLabel1;
        this.jPanel1 = jPanel1;
        this.jPanel2 = jPanel2;
        this.nazwisko_zawodnika = nazwisko_zawodnika;
        this.numer_koszulki = numer_koszulki;
        
        popMenu1.add(atak_punktowy).addActionListener(al);
        popMenu1.addSeparator();
        popMenu1.add(atak_autowy).addActionListener(al);
        popMenu1.addSeparator();
        popMenu1.add(atak_blok_aut).addActionListener(al);
        popMenu1.addSeparator();
        popMenu1.add(atak_w_siatke).addActionListener(al);
        Atak.add(popMenu1);


        JMenu pojedynczy = new JMenu("pojedyńczy");
        pojedynczy.add(blok_punktowy1).addActionListener(al);
        pojedynczy.addSeparator();
        pojedynczy.add(blok_autowy1).addActionListener(al);
        pojedynczy.addSeparator();
        pojedynczy.add(blok_wyblok1).addActionListener(al);
        popMenu2.add(pojedynczy);
        popMenu2.addSeparator();
        JMenu podwojny = new JMenu("podwójny");
        podwojny.add(blok_punktowy2).addActionListener(al);
        podwojny.addSeparator();
        podwojny.add(blok_autowy2).addActionListener(al);
        podwojny.addSeparator();
        podwojny.add(blok_wyblok2).addActionListener(al);
        popMenu2.add(podwojny);
        popMenu2.addSeparator();
        JMenu potrojny = new JMenu("potrójny");
        potrojny.add(blok_punktowy3).addActionListener(al);
        potrojny.addSeparator();
        potrojny.add(blok_autowy3).addActionListener(al);
        potrojny.addSeparator();
        potrojny.add(blok_wyblok3).addActionListener(al);
        popMenu2.add(potrojny);
        Blok.add(popMenu2);

        
        popMenu3.add(zagrywka_ass).addActionListener(al);
        popMenu3.addSeparator();
        popMenu3.add(zagrywka_autowa).addActionListener(al);
        popMenu3.addSeparator();
        popMenu3.add(zagrywka_w_siatke).addActionListener(al);
        popMenu3.addSeparator();
        popMenu3.add(zagrywka_punktowa).addActionListener(al);
        Zagrywka.add(popMenu3);

        
        popMenu4.add(przyjecie_blad).addActionListener(al);
        popMenu4.addSeparator();
        popMenu4.add(przyjecie_perfekcyjne).addActionListener(al);
        popMenu4.addSeparator();
        popMenu4.add(przyjecie_dobre).addActionListener(al);
        Przyjecie.add(popMenu4);
        
        
        popMenu5.add(obrona_dobra).addActionListener(al);
        popMenu5.addSeparator();
        popMenu5.add(obrona_blad).addActionListener(al);
        Obrona.add(popMenu5);
    }                       

    private void AtakMousePressed(java.awt.event.MouseEvent evt) {                                  
        // TODO add your handling code here:
        System.out.print("\n\tTu powinien być action performed do ataku!!!\n");
        if ((evt.getButton()==MouseEvent.BUTTON1)||(evt.getButton()==MouseEvent.BUTTON3)){
            popMenu1.show(Atak, Atak.getWidth(), Atak.getHeight());
        }
    }                                 

    private void BlokMousePressed(java.awt.event.MouseEvent evt) {                                  
        // TODO add your handling code here:
        if ((evt.getButton()==MouseEvent.BUTTON1)||(evt.getButton()==MouseEvent.BUTTON3)){
            popMenu2.show(Blok, Blok.getWidth(), Blok.getHeight());
        }
    }                                 

    private void ZagrywkaMousePressed(java.awt.event.MouseEvent evt) {                                      
        // TODO add your handling code here:
        if ((evt.getButton()==MouseEvent.BUTTON1)||(evt.getButton()==MouseEvent.BUTTON3)){
            popMenu3.show(Zagrywka, Zagrywka.getWidth(), Zagrywka.getHeight());
        }
    }                                     

    private void PrzyjecieMousePressed(java.awt.event.MouseEvent evt) {                                       
        // TODO add your handling code here:
        if ((evt.getButton()==MouseEvent.BUTTON1)||(evt.getButton()==MouseEvent.BUTTON3)){
            popMenu4.show(Przyjecie, Przyjecie.getWidth(), Przyjecie.getHeight());
        }
    }                                      

    private void ObronaMousePressed(java.awt.event.MouseEvent evt) {                                    
        // TODO add your handling code here:
        if ((evt.getButton()==MouseEvent.BUTTON1)||(evt.getButton()==MouseEvent.BUTTON3)){
            popMenu5.show(Obrona, Obrona.getWidth(), Obrona.getHeight());
        }
    }                                   

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        Zawodnik zaw = (Zawodnik) jComboBox1.getSelectedItem();
        setNazwisko(zaw.nazwisko);
        setNumer_koszulki(zaw.numer_koszulki);
        setId_zawodnika(zaw.id);
        wybrany=true;
        if (id_starego==0){
            fireMyEvent("wybor", zaw.id, 0, numer_druzyny);
        } else {
            fireMyEvent("zmiana", zaw.id, id_starego, numer_druzyny);
        }
        id_starego=zaw.id;
        jPanel1.setVisible(true);
        jPanel2.setVisible(false);
    }                                        

    private void zmienActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
        Cofnij.setVisible(true);
        wybrany=false;
        jPanel1.setVisible(false);
        jPanel2.setVisible(true);
    }                                     

    private void CofnijActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
        jPanel1.setVisible(true);
        jPanel2.setVisible(false);
        wybrany=true;
        Cofnij.setVisible(false);
    }                                      

     public int getId_zawodnika() {
        return id_zawodnika;
    }

    public void setId_zawodnika(int id_zawodnika) {
        this.id_zawodnika = id_zawodnika;
    }
    
    public String getNazwisko (){
        return nazwisko;
    }

    public void setNazwisko (String nazwisko){
        this.nazwisko = nazwisko;
        nazwisko_zawodnika.setText(nazwisko);
    }

    public int getIdRodzaju (){
        return this.id_rodzaju_zdarzenia;
    }
    
    public void setNumer_koszulki (int numer){
        this.numer = numer;
        numer_koszulki.setText(String.valueOf(numer));
    }

    public void setZawodnik(Object zaw[]){
        jComboBox1.removeAllItems();
        for (int i=0; i<zaw.length; i++){
                jComboBox1.addItem(zaw[i]);
            }
    }

    public Object getZawodnik(){
        return this.zawodnik;
    }
    
    private ActionListener al = new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            if(e.getSource() == atak_punktowy){
                id_rodzaju_zdarzenia = 1;
                System.out.print("atak punktowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == atak_blok_aut){
                id_rodzaju_zdarzenia = 5;
                System.out.print("atak blok-aut: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == atak_autowy){
                id_rodzaju_zdarzenia = 4;
                System.out.print("atak autowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == atak_w_siatke){
                id_rodzaju_zdarzenia = 11;
                System.out.print("atak w siatke: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_autowy1){
                id_rodzaju_zdarzenia = 6;
                System.out.print("blok autowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_autowy2){
                id_rodzaju_zdarzenia = 6;
                System.out.print("podwójny blok autowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_autowy3){
                id_rodzaju_zdarzenia = 6;
                System.out.print("potrójny blok autowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_punktowy1){
                id_rodzaju_zdarzenia = 2;
                System.out.print("blok punktowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_punktowy2){
                id_rodzaju_zdarzenia = 2;
                System.out.print("podwójny blok punktowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_punktowy3){
                id_rodzaju_zdarzenia = 2;
                System.out.print("potrójny blok punktowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_wyblok1){
                id_rodzaju_zdarzenia = 9;
                System.out.print("wyblok: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_wyblok2){
                id_rodzaju_zdarzenia = 9;
                System.out.print("podwójny wyblok: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == blok_wyblok3){
                id_rodzaju_zdarzenia = 9;
                System.out.print("potrójny wyblok: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == zagrywka_ass){
                id_rodzaju_zdarzenia = 3;
                System.out.print("ass serwisowy: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == zagrywka_autowa){
                id_rodzaju_zdarzenia = 7;
                System.out.print("zagrywka autowa: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == zagrywka_punktowa){
                id_rodzaju_zdarzenia = 12;
                System.out.print("zagrywka punktowa: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == zagrywka_w_siatke){
                id_rodzaju_zdarzenia = 10;
                System.out.print("zagrywka w siatke: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == przyjecie_blad){
                id_rodzaju_zdarzenia = 8;
                System.out.print("błąd przyjęcia: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == przyjecie_dobre){
                id_rodzaju_zdarzenia = 14;
                System.out.print("dobre przyjecie: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == przyjecie_perfekcyjne){
                id_rodzaju_zdarzenia = 13;
                System.out.print("perfekcyjne przyjecie: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == obrona_blad){
                id_rodzaju_zdarzenia = 16;
                System.out.print("błąd obrony: \t" + id_rodzaju_zdarzenia + "\n");
            }
            if(e.getSource() == obrona_dobra){
                id_rodzaju_zdarzenia = 15;
                System.out.print("dobra obrona: \t" + id_rodzaju_zdarzenia + "\n");
            }
        }
    };

//klasa i interejs do obsługi własnego zdarzenia
public class MyEvent extends EventObject {
    private String _typ;
    private int id_starego;
    private int id_zawodnika;
    private int numer_druzyny;
    public MyEvent (Object source, String typ, int id_nowego, int id_star,  int numer){
        super(source);
        _typ = typ;
        id_zawodnika = id_nowego;
        id_starego = id_star;
        numer_druzyny = numer;
    }

    public String Typ (){
        return _typ;
    }

    public int Id_Zawodnika(){
        return id_zawodnika;
    }

    public int Numer_druzyny(){
        return numer_druzyny;
    }

    public int Id_starego(){
        return id_starego;
    }

}

public interface MyEventListener extends EventListener {
    public void MyEventOccured (MyEvent evt);
}

Jak widać komponent jest pisany netbeans i większość wyglądu jest zrobiony graficznie, tylko samo menu jest napisane kodem. Wie ktoś może dlaczego w tej chwili JPopupMenu się nie wyświetla?? Dodam że przed dopisaniem metod i dwóch klas do obsługi własnego zdarzenia popmenu sie pokazywało.
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1