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?
Nie wiem czy dobrze rozumiem.
if(warnek) {
jbutton3.setText("tekst1");
jbutton6.setText("tekst2");
}
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
Wrzuć te buttony do tablicy.
możesz podesłać jakiś przykład bo wcześniej już próbowałem to zrobić ale nie chciało mi działać..
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,....};
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.