ActionListener dla kilku buttonow

0

Witam!

Mam problem z ActionListenerem i przyciskami. W programie mam dwa buttony. Kiedy naciskam przycisk dodaj operacje wykonuja sie prawidlowo, kiedy zaraz potem naciskam przycisk usun nic sie niedzieje. Przycisk usun dziala tylko wtedy kiedy zostanie nacisniety jako pierwszy podczas dzialania programu. Gdzie jest pise pogrzebany?

Kawalek kodu

ActionListener al = new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        
        //jezeli zostal nacisniety przycisk dodaj
        if(e.getSource() == dodaj)
        {
          //wstwiamy wartosc z pola tekstowego do nowego zlecenia
          nowezlecenie.wstawnumer(numerek);
          nowezlecenie.wstawtresc(poletekstowe.getText());
          nowezlecenie.wstawwaznosc(listawaznosci.getSelectedItem().toString());
          nowezlecenie.wstawpilnosc(listapilnosci.getSelectedItem().toString());
          numerek++;

          //i ladujemy go do wektora
          listazadan.addElement(nowezlecenie);
          
          //drukowanie zlecen z wektora
          for(int i=0; i < listazadan.size(); i++)
          {
            nowezlecenie = (Zlecenie) listazadan.get(i);
            add(new Label(nowezlecenie.zwrocnumer())).setBounds(1,120+20*i,10,20);
            add(new Label(nowezlecenie.zwroctresc())).setBounds(10,120+20*i,250,20);
            add(new Label(nowezlecenie.zwrocwaznosc())).setBounds(270,120+20*i,80,20);
            add(new Label(" |  "+nowezlecenie.zwrocpilnosc())).setBounds(350,120+20*i,90,20);
          }
 
          repaint();
          
        }
        else if(e.getSource() == usun)
        {
          
          add(new Label("Usunięto!")).setBounds(100,120+20,100,20);

          repaint();
        }
      }
    };

Prosze o pomoc!

0

Ja bym inaczej całość napisał. Przede wszystkim posiadanie kilku specjalizowanych klas w jednym pakiecie nie boli. Zdefiniuj dwie klasy pierwszą dla dodaj drugą dla usuń. Problem sam się rozwiązuje.

1

polecam zapoznać się z czymś takim jak 'anonimowe klasy wewnętrzne' wygląda to w skrócie tak:

JButton guzik1= new JButton("Guzik1");
JButton guzik2= new JButton("Guzik2");

//poniższe linie kodu umieszczamy np. w konstruktorze JFrame'a
guzik1.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					//cośtam...
					}
				}

guzik2.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					//cośtam innego...
					}
				}

proste nieprawdaż?
polecam, i to nawet bardzo, ten sposób podpinania actionListenerów do wszystkich obiektów

0

albo jeszcze mozna uzyc prywatnych klas, czyli(kod Shimmi)

JButton guzik1= new JButton("Guzik1");
JButton guzik2= new JButton("Guzik2");

//poniższe linie kodu umieszczamy np. w konstruktorze JFrame'a
guzik1.addActionListener(new Zdarzenie())

private class Zdarzenie() implements ActionListener
{

                            public void actionPerformed(ActionEvent e) {
                                    //cośtam...
                                    }
                            }
0

wystarczylo zamienic else if na if :) ja zawsze tak pisze i dziala

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