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
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