0
解決了背景圖像的問題後,我真的試圖改變焦點策略。在JTabbedPane的選項卡上設置個性化的FocusTraversalPolicy
我創建類和重載的方法是這樣的:
package tab;
import java.awt.Component;
import java.awt.Container;
import java.awt.FocusTraversalPolicy;
import java.util.Vector;
public class MyOFocusTraversalPolicy extends FocusTraversalPolicy{
Vector<Component> order;
public MyOFocusTraversalPolicy(Vector<Component> order) {
this.order = new Vector<Component>(order.size());
this.order.addAll(order);
}
@Override
public Component getComponentAfter(Container focusCycleRoot,
Component aComponent) {
int idx = (order.indexOf(aComponent) + 1);// % order.size();
System.out.println("Estoy en el getComponentAfter, numero: "+idx);
System.out.println("El tamaño del vector es de:"+order.size());
return order.get(idx);
}
@Override
public Component getComponentBefore(Container focusCycleRoot,
Component aComponent) {
int idx = order.indexOf(aComponent) - 1;
if (idx == 0) {
idx = order.size() - 1;
}
return order.get(idx);
}
@Override
public Component getDefaultComponent(Container focusCycleRoot) {
return order.get(0);
}
@Override
public Component getLastComponent(Container focusCycleRoot) {
return order.lastElement();
}
@Override
public Component getFirstComponent(Container focusCycleRoot) {
return order.get(1);
}
}
我做載體,在該選項卡中的所有組件,並宣佈MyOFocusTraversalPolicy的新對象,像這樣:
Vector<Component> order = new Vector<Component>(14);
order.add(rBtnHombre);
order.add(rBtnMujer);
order.add(spinEdad);
order.add(slider);
order.add(txtUser);
order.add(txtPass);
order.add(txtConfirmPass);
order.add(txtNombre);
order.add(txtApellidos);
order.add(cBoxProvincias);
order.add(cBoxTipoCalle);
order.add(txtDireccion);
order.add(txtCP);
order.add(txtMail);
newPolicyDatos = new MyOFocusTraversalPolicy(order);
datos.setFocusTraversalPolicy(newPolicyDatos);
但它沒有效果。
問題可能是因爲「datos」是屬於JTabbedPane的三個選項卡中的其中一個,對於其他任何我已用完的想法,並且我無法在選項卡上找到有關FocusTraversalPolicy的特定信息。
我已在getComponentAfter打印,並通過前
希望有人已經嘗試這樣做,可以給我一個手