/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
JFocusTraversal***** ????
Fra : Preben


Dato : 29-06-03 19:24

Hej

Jeg har problemer med JFocusTraversal***** for jeg aner ikke hvad jeg
skal kigge på!

Mit problem er at jeg har 90 JTextFields og når man står i den første
skal den hoppe videre til den anden osv. Men når den når JTextField 90
skal den hoppe videre til 81?

Jeg har lavet det med "den gamle" metode, men det anbefales ikke at lave
det mere med den, da den er "deprecated" i Java 1.4.0 :(

Men hvordan får jeg skidtet til at virke?

Her er den gamle kode:

for (int i = 0; i < ANTAL; i++) {
dato[i].setNextFocusableComponent(bilag[i]);
bilag[i].setNextFocusableComponent(type[i]);
type[i].setNextFocusableComponent(kontonr[i]);
kontonr[i].setNextFocusableComponent(moms[i]);
moms[i].setNextFocusableComponent(tekst[i]);
tekst[i].setNextFocusableComponent(debet[i]);
debet[i].setNextFocusableComponent(kredit[i]);
kredit[i].setNextFocusableComponent(modkonto[i]);
if (i != ANTAL - 1)
modkonto[i].setNextFocusableComponent(dato[i+1]);
else
modkonto[i].setNextFocusableComponent(dato[i]);
}


Hvordan omsætter jeg denne "simple" kode til det mere avancerede
FocusTraversal*****????


Jeg ønskede endvidere at få et par andre taster end tab til at virke som
TraversalKeys, og det var ganske simpelt at tilføje det til et HashSet,
men sådan kan jeg vel ikke gøre denne gang?



Mvh / Preben


--
If your Dell laptop is unstable, try change the power supply - it works!


 
 
Peter Lind (30-06-2003)
Kommentar
Fra : Peter Lind


Dato : 30-06-03 12:15


"Preben" <64bit@mailme.dk> wrote in message
news:3eff2eab$0$24695$edfadb0f@dread14.news.tele.dk...
> Hej
>
> Jeg har problemer med JFocusTraversal***** for jeg aner ikke hvad jeg
> skal kigge på!

Har du kigget på
http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html#customFocusTraversal

Jeg synes at det forklarer det meste, men jeg har selvfølgelig heller ikke
prøvet at implementere det

Men på en eller anden måde skal du lave en klasse der extender
FocusTraversalPolicy og som kender alle dine komponenter.
Og så skal du blot fortælle din container (det JPanel, der indeholder alle
dine JTextFields) at den skal bruge pågældende FocusTraversalPolicy.

Måske kan du lave noget i retning af dette i din FocusTraversalPolicy
klasse:

public Component getComponentAfter(Container focusCycleRoot,
Component
aComponent) {
for( int i =0; i < ANTAL; i++ ) {

if( aComponent.equals( dato[i] ) return bilag[i];
else if( aComponent.equals( bilag[i] ) return type[i];
else if( aComponent.equals( type[i] ) return kontonr[i];
// og så fremdeles...
}
return dato[0];
}

Og så selvfølgelig det modsatte i getComponentBefore() metoden.


> Jeg ønskede endvidere at få et par andre taster end tab til at virke som
> TraversalKeys, og det var ganske simpelt at tilføje det til et HashSet,
> men sådan kan jeg vel ikke gøre denne gang?

Tjooo - altså du skal bruge setFocusTraversalKeys(int id, Set keystrokes)
metoden i din container. Der er vist ikke den store forskel.
Kig i API'en for FocusTraversalPolicy og Container.

Og sig til, hvis det stadig driller.

Mvh
Peter Lind



Søg
Reklame
Statistik
Spørgsmål : 177462
Tips : 31964
Nyheder : 719565
Indlæg : 6408227
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste