Java FX (pętla problem)

0

Piszę prosty słownik z możliwością powtórek, utknąłem. Nie rozumiem dlaczego poniższa pętla nie działa, wydaję mi się że jest poprawna:

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

		            		text2.setText(words.get(i).getEnglish());
		            		final int p =i;    
		            		text1.setOnKeyPressed(new EventHandler<KeyEvent>()
						    {
		            			       @Override
						        public void handle(KeyEvent ke)
						        {
						            
						        	if (ke.getCode().equals(KeyCode.ENTER))
						            {
						        		
		    				if((text1.getText().toString().trim()).equals(words.get(p).getPolish())) {
		    					text0.setText("poprawna odpowiedz");
		    						 
		    						 
		    						
		    				}
		    				else {text0.setText( "zła odpowiedz poprawna odpowiedz to: " + words.get(p).getPolish());
		    				}
						            }
						       
						        }
						     	
						    });
						            }
0

Zadeklarowałeś zachowanie text1 w pętli. To powinno być w oddzielnej metodzie.
Pamiętaj o tym, że najlepiej pisać tak, aby jedna metoda wykonywała jedno działanie.

Ogólnie pętla jest bezsensu w tym przypadku.

0

Źle się wyraziłem. Pętla się wykonuje poprawnie ale tylko 1 raz, po zakończeniu przechodzi do dalszej części kodu ignorując for(int i=0; i<d; i++) {

0

A ile wynosi u Ciebie d? Może d == 1 dlatego pętla wykonuje tylko jeden obrót.

0

d pobieram z innej komórki w aplikacji ale nawet jak ręcznie wprowadzę jako d= 2,3 itd. to i tak pętla wykonuje się raz.

0

Nie wiadomo po co miałaby ta pętla wykonać się więcej razy. I tak tylko jeden przebieg się liczy - ostatni. i == d-1. Poprzednie przebiegi są robione, ale na daremno. Ich efekty są nadpisywane.
Nie kumasz jak działają event handlery.

0

Wcyhodzi że faktycznie nie kumam...,
a jak mogę rozwiązać case'a żeby po każdorazowym zatwierdzeniu "enterem" text1 w w oknie text2 pojawiał się nowy element z listy words w ilości d?

0

Po to masz właśnie klasę anonimową EventHandler!!!!! Chłopie!
W tej klasie piszesz kod, który się każdorazowo wykona po naciśnięciu ENTER

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