Problem z ActionListener

0

Witam!

Mam problem z actionListenerem, mianowicie mam za zadanie napisać program test, który dodaje pytania edytuje itd. I mam problem w metodzie Rozwiązującej test, **wczytuje w pętli ** pytania z pliku i podkłada pod zmienne, następnie wpisuje w JTextArea te pytanie i Tym miejscu powinno czekać na reakcje actionListenera który ustawia wartość zmienne odpowiedz na a,b lub c.

Teoretycznie wszystko jest w porządku, ale wyświetla mi wszystkie 10 pytań, a po wyświetleniu dopiero mam możliwość kliknięcia buttona z odpowiedzią, co ustawi mi tylko na ostatnie wykonanie pętli, a ja chciałbym żeby w trakcie wykonywania pętli program czekał na reakcję kliknięcia w jeden z 3 przycisków, po czym pętla leci dalej.

Wysyłam kawałek pętli bo cały kod ma naprawdę sporo linii i jest mało czytelny wyślę tylko fragment o który mi chodzi:

kod pętli:

                for(int i=0; i<2; i++)
                {

                obszar.append("Pytanie nr: " + wylosowany + "\n");
                obszar.append(tab[wylosowany].pytanie + "\n");
                obszar.append("Odp a: " + tab[wylosowany].odpA + "\n");
                obszar.append("Odp b: " + tab[wylosowany].odpB + "\n");
                obszar.append("Odp c: " + tab[wylosowany].odpC + "\n");
                obszar.append("Wybierz prawidłową odpowiedź: " + "\n\n");
				
////////Tutaj Powinno być coś wstawione co oczekiwało by na kliknięcie w jeden z 3 buttonów		
                
                if(odpowiedz.equals(tab[wylosowany].odpPrawidlowa))
                punkty++;                   	
                }

kod actionListenera:

		@Override
		public void actionPerformed(ActionEvent e) {
				
		Object zrodlo = e.getSource();
				
		if(zrodlo==bA)
		odpowiedz="a";	

		else if(zrodlo==bB)
		odpowiedz="b";
		
		else if(zrodlo==bC)
		odpowiedz="c";	
		} 

Z góry dziękuje na odpowiedź, mam nadzieję, że w miarę dokładnie opisałem o co mi chodzi.

Pozdrawiam Balgore.

0

Źle myślisz. Poczytaj o programowaniu zdarzeniami. Na mój gust to powinno wyglądać tak.

1)Wczytujesz wszystkie pytania przy tworzeniu.
2)Po wyświetleniu okienka uruchamiasz funkcję nowePytanie(), która to powinna uzupełnić treść pytania + chceckboxy (pierwsza część pętli).

I tutaj nic więcej nie robisz tylko oczekujesz na zdarzenie od przycisku.

3)Gdy przycisk zostaje wciśnięty sprawdzasz odpowiedz (treść twojego actionlistenera), oraz wykonujesz drugą część pętli czyli sprawdzasz czy odpowiedź jest prawidłowa i dodajesz punkty + wywołujesz funkcję nowePytanie() która podmienia pytanie na nowe.

Przy dłuższych działaniach actionlistenera powinieneś to wyrzucić do osobnego wątku. Tutaj nie ma takiej potrzeby ale jak już zrobisz działającą wersję to możesz spróbować dla treningu.

0

Witam ponownie, nie wiem czy dobrze Cb zrozumiałem, ale jeśli dobrze to twoim "sposobem" z każdym nowym pytaniem JTextArea będzie wyczyszczona, a ja chciałabym żeby przy każdym nowym pytaniu stare było widoczne.

Pozdrawiam Balgore.

0

W takim razie nie czyścisz po prostu textArea w metodzie nastepnePytanie() i tyle.

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