Wątek przeniesiony 2014-03-31 18:49 z Java przez bogdans.

Odwoływanie się do danego buttona w pętli

0

Witam
Stworzyłem gui gdzie użyłem ok 40 buttonów. jButton1,jButton2,jButton3....jButtonX
Potrzebuje teraz w jakiś proty sposób odwołać się (w pętli lub nie) do konkretnego(lub kilku) buttona jeśli jakiś warunek zostanie spełniony.
Ktoś ma jakieś pomysły?

0

Nie wiem czy dobrze rozumiem.

if(warnek) {
    jbutton3.setText("tekst1");
    jbutton6.setText("tekst2");
}
0

Nie o to mi chodzi.
Sprecyzuje.
Mam zmienną AB typu int gdzie zmieniają się wartości zależnie od tego co robi użytkownik...
i teraz:

if(warunek==true){
jButtonAB.setText();
}

co mam dać w miejsce jButtonAB aby to zadziałało? Tak aby odwołać się do buttona o numerze równym zmiennej AB

0

Wrzuć te buttony do tablicy.

0

możesz podesłać jakiś przykład bo wcześniej już próbowałem to zrobić ale nie chciało mi działać..

0

a można to zrobić jakoś w ten sposób:

JButton [] przyciski = new JButton[50];
przyciski[1] = jButton1;
przyciski[2] = jButton2;
...

albo:

JButton [] przyciski = {jButton1,jButton2,jButton3,....};
0

Tablica, tablicą, to tylko sposób na przechowanie przycisków. Jeżeli dobrze zrozumiałem chcesz osiągnąć efekt taki by po zmianie wartości AB następowała zmiana w poszczególnych buttonach. Sposób trzymania samych przycisków jest tu sprawą trzeciorzędną. To czego potrzebujesz nazywa się wzorcem obserwatora.
Zmiana wartości AB przez setter:

public void setAb(int newAb){
    int oldAb = this.ab;
    this.ab = newAb;
    firePropertyChange(new PropertyChangeEvent(oldAb, newAb, this));
}
/// w tej samej klasie
public void addPropertyChangeListener(PropertyChangeListener pcl){
    listeners.add(pcl);
}

Następnie przy tworzeniu przycisków można je opakować we własną klasę, co choć jest złamaniem SRP ponieważ przycisk nagle dostaje dodatkowe zachowanie to jednak na początek wystarczy:

class ListinigButton implements PropertyChangeListener{
  //... potrzebne konstruktory

   public void whenPropertyChange(PropertyChangeEvent pce){
         if(pce.newValue == warunek){
        // logika
        }
   }
}

Następnie tworząc przycisk:

ListinigButton jbuttonX = new ListinigButton ("przycisk");
obiektTrzymajacyWartoscAb.addPropertyChangeListener(jbuttonX);

To czy ten przycisk będzie trzymany w tablicy, liście czy jako swobodna i niezależna zmienna jest tu wtórny.

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