webForumDet fria alternativet

Sätta focus på ett textfield

3 svar · 287 visningar · startad av pego

pegoMedlem sedan sep. 200110 inlägg
#1

Har ett JTextfield där jag matar in ett värde, beroende på vad som skrivs in vill jag att markören ska sättas i ett annat JTextfield. Har prövat med nästa_JTextfield.requestfocus() men det fungerar inte. Vad gör jag för fel ?. Tacksam för tips !

LimeMedlem sedan sep. 2001961 inlägg
#2

Va?

Nu får du förtydliga dig lite.

Är det så här:

I jtf_IntegerField så skriver du in en text beståend av siffrorna 0-9. Beroende på vad som skrivs i dessa så skall markören flyttas till någon av 100 andra JTextFields?

Eller är det såhär:

Du skriver in något i jtf_SureName och skall sedan gå vidare till jtf_LastName när du trycker enter?

Hu?

/Lime

pegoMedlem sedan sep. 200110 inlägg
#3

Focus

Ska försöka att utveckla min tankegång. Jag har fler textfält som jag kan tabba mig fram igenom, det fungerar utan problem. Mitt problem uppstår när jag inte vill tabba mig i den normala ordningen, från textfält 1 till textfält 2 utan kanske vill hoppa till textfält 6 utan att tabba mig igenom textfält 1,2,3,4,5 för att slutligen hamna i textfält 6. Anta att om jag skriver in en viss bokstav eller siffra i textfält 1 och trycker på tabbtangenten så gör jag en programmatisk kontroll när textfältet tappar focus av det värde som skrivits in i textfältet. Uppfyller det inskrivna värdet vissa villkor så vill jag sätta markören i textfält 6 annars så görs ingenting utan den sätter markören i nästa textfält som den ska och det är där mitt problem uppstår. Hur kan jag programmatiskt få markören att sättas i textfält 6. Det jag trodde skulle fungera var att använda metoden textfält6.requestFocus() men det fungerar inte. Hoppas förklaringen är tillräcklig för att du ska kunna ge mig en lösning.

LimeMedlem sedan sep. 2001961 inlägg
#4

Jaha!

Om du går in i API:et och tittar på javax.swing.JComponent så hittar du en metod som heter 'netxtFocusableComponent(JComponent)'. Det är den du skall använda.

Lite fördjupning... requestFocus() är till för att ställa sig i kö för att få focus. Det är ingen garanti för att komponenten verkligen får fokus. Det beror på om den som har fokus just nu är modal eller inte. Med modal menas att ingen annan får fokuset eller kan göra något medans den komponenter är aktiv. Meddelandedialoger är sådana. Och textfields. Det är helt som det ska vara. Hur irriterande skulle det inte vara om programmet hela tiden flyttade bort markören från ett textfield som man sitter och skriver i?

/Lime

137 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)