Focusorderlist = new arraylist <component> ();
Focusorderlist. Add (muteradio );
Focusorderlist. Add (defaultradio );
Focusorderlist. Add (manualradio );
Focusorderlist. Add (filetxtfield );
Focusorderlist. Add (selectbtn );
Focusorderlist. Add (playbackbtn );
Focusorderlist. Add (okbtn );
Focusorderlist. Add (cancelbtn );
Focuspolicy = new myownfocustraversalpolicy ();
// Set foucuspolicy
This. setfocustraversalpolicy (focuspolicy );
/**
* focustraversalpolicy
*/
public class myownfocustraversalpolicy extends focustraversalpolicy {
/**
*
* @ Param focuscycleroot container
* @ Param acomponent component
* @ return component
*/
Public component getcomponentafter (container focuscycleroot,
component acomponent) {
Int nidx = focusorderlist. indexof (acomponent );
Int nafter;
If (nidx = focusorderlist. Size ()-1 ){
Nafter = 0;
} Else {
Nafter = nidx + 1;
}
Component = focusorderlist. Get (nafter );
Boolean bcontinue = false;
If (! Component. isenabled ()){
Bcontinue = true;
} Else if (Component instanceof jtextfield ){
Jtextfield txtfield = (jtextfield) component;
If (! Txtfield. iseditable ()){
Bcontinue = true;
}
}
If (bcontinue ){
Return getcomponentafter (focuscycleroot, component );
} Else {
Return component;
}
}
/**
*
* @ Param focuscycleroot container
* @ Param acomponent component
* @ Return component
*/
Public component getcomponentbefore (container focuscycleroot,
Component acomponent ){
Int nidx = focusorderlist. indexof (acomponent );
Int nbefore;
If (nidx = 0 ){
Nbefore = focusorderlist. Size ()-1;
} Else {
Nbefore = nidx-1;
}
Component = focusorderlist. Get (nbefore );
Boolean bcontinue = false;
If (! Component. isenabled () {
bcontinue = true;
}else if (Component instanceof jtextfield) {
jtextfield txtfield = (jtextfield) component;
If (! Txtfield. iseditable () {
bcontinue = true;
}< BR >}
If (bcontinue ){
Return getcomponentbefore (focuscycleroot, component );
} Else {
Return component;
}
}
/**
*
* @ Param focuscycleroot container
* @ Return component
*/
Public component getdefaultcomponent (container focuscycleroot ){
Component = focusorderlist. Get (0 );
Return component;
}
/**
*
* @ Param focuscycleroot container
* @ Return component
*/
Public component getlastcomponent (container focuscycleroot ){
Component = focusorderlist. Get (focusorderlist. Size ()-1 );
Return component;
}
/**
*
* @ Param focuscycleroot container
* @ Return component
*/
Public component getfirstcomponent (container focuscycleroot ){
Component = focusorderlist. Get (0 );
Return component;
}
}