Porównanie zawartości .getText() dla JButton

0

Witam

moj program to prosta "gra" pamięciowa. W sumie nic jeszcze w niej nie ma, wyświetla okienko z 8 przyciskami. Zadaniem użutkownika jest wybranie 2 identycznych przycisków czyli w tym przypadku np. "1" oraz "1". Program powinien przy wybraniu pierwszego przycisku nadać mu kolor zielony, oraz zmienić .setEnabled() na wartosć "false". Następnie w przypadku wybrania 2 przycisku z wartością .getText() "1" powinien ustawić obydwóm przyciskom wartość .isVisible() na "false". W przypadku gdy wartość .getText() obydwóch użytych buttonów będzie różna, program powinien oba przyciski pomalować na czerwono.

Mam listę


class Buttons {
    Petla petla = new Petla();
    JButton jeden = new JButton("1");
    JButton jeden_jeden = new JButton("1");
    JButton dwa = new JButton("2");
    JButton dwa_dwa = new JButton("2");
    JButton trzy = new JButton("3");
    JButton trzy_trzy = new JButton("3");
    JButton cztery = new JButton("4");
    JButton cztery_cztery = new JButton("4");
    ArrayList<JButton> list = new ArrayList();
    int spr;
    int pointer;
    String element;


    public void AList() {
        list.add(jeden);
        list.add(dwa);
        list.add(jeden_jeden);
        list.add(dwa_dwa);
        list.add(trzy);
        list.add(trzy_trzy);
        list.add(cztery);
        list.add(cztery_cztery);
    }

Po wciśnięciu przycisku następuje

ActionListener act = (event) -> {


       for (int i = 0; i < list.size(); i++) {
           if (event.getSource() == list.get(i)) {
               System.out.println(list.get(i).getUIClassID());
               IsInUse();


               if (spr == 0) {
                   list.get(i).setSelected(true);
                   list.get(i).setBackground(Color.GREEN);
                   list.get(i).setEnabled(false);
                   // Jeśli jakiś przycisk był wcześniej użyty sprawdza czy kolejny wciśnięty jest powiązany z poprzednikiem i podejmuje akcje
               } else if (spr == 1) {
                   list.get(i).setSelected(true);
                   petla.sprawdz(list, ElemName());
                   list.get(i).setBackground(Color.RED);

               }
           }
       }
   };


Za sprawdzenie zawaretości .getText() oraz właściwą zmianę .isVisible() odpowiada następująca pętla

public void sprawdz(ArrayList<JButton> lista, String name){
            for (int i = 0; i < lista.size(); i++) {
                for (int j = 0; j < lista.size(); j++) {
                    if (lista.get(i).isSelected()==true && lista.get(j).isSelected()==true) {
                        if (lista.get(i).getText().equals(name)) {
                            lista.get(i).setVisible(false);
                            lista.get(j).setVisible(false);
                        }
                    }
                }
            }


        }

Jest jeszcze funkcja wypluwająca wartość .getText()

public String ElemName() {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).isSelected() == true) {
                element = list.get(i).getText();
            }

        }
        return element;
    }

Problem mam z powyższą pętlą. Chodzi o to, że nie potrafię prawidłowo porównać wartości tych przycisków, a nie mam pomysłu jak inaczej mógłbym porównać czy wciśnięto te same przyciski.

Obecnie program zmienia wartość .setVisible() niezależnie od tego czy wartość .getText() jest identyczna czy nie.

Próbowałem kombinacji w pętli


public void sprawdz(ArrayList<JButton> lista, String name){
           for (int i = 0; i < lista.size(); i++) {
               for (int j = 0; j < lista.size(); j++) {
                   if (lista.get(i).isSelected()==true && lista.get(j).isSelected()==true) {
                       if (lista.get(i).getText().equals(lista.get(j).getText())) {
                           lista.get(i).setVisible(false);
                           lista.get(j).setVisible(false);
                       }
                   }
               }
           }


       }

ale wtedy zdaje się również niezależnie od tego jakie przyciski były wciśnięte czyniło to samo.

Mam wrażenie, że moja pętla sprawdza czy dany .getText() zawiera wartość i wtedy zmienia .setVisible(), a kwestia jaką wartość zaiwiera .getText() i czy te wartości są różne, jest w pętli pomijana i nie potrafię tego przeskoczyć. Proszę o pomoc.

0

Post nieważny, oświeciło mnie w nocy i znalazłem błąd.

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