Hello all,

I have a problem when I load a JFrame. The JFrame has two JTextFields and two JButtons, when it opens the first JTextFields has the focus with "requestFocus()" function. The problem is that the focus is not allways gained well. Sometimes, when the JFrame is loaded, it´s not loaded correctly, the focus is n´t gained and you only can exit with the JButton at the top. If you close the JFrame and you open it again it may work or not.

-----------------

Hola a todos,

Tengo un problema al inicializar un JFrame. Esta interfaz consta de 2 JTextFields, un JButton para buscar y otro para salir. Cuando se iniciliza el JFrame uno de los JTextField tiene que ganar el focus con la función "requestFocus()", pero no siempre ocurre; me explico, a veces, al abrir la ventana no inicializa bien la interfaz y sólo se puede salir, ya que ni pulsando el campo de texto gana el foco. Si salimos y volvemos a entrar puede funcionar o no.

Source Code / Codigo Fuente

JFrame:

...

private void initBusqueda() {
trazas.printTraza("Inicializando Panel Busqueda",
"FrameServicioDomicilio", LNXTrz.INFO);

setEstado(Constantes.SELECCION_DNI_TELEF);

// PANEL BUSQUEDA
panelBusqueda = new JPanel();
panelBusqueda.addFocusListener(this);
FlowLayout flowLayout = (FlowLayout) panelBusqueda.getLayout();
flowLayout.setHgap(20);
panelBusqueda.setBounds(10, 27, 891, 45);
getContentPane().add(panelBusqueda);

labelDniBusqueda = new JLabel("DNI/NIF:");
labelDniBusqueda.setFont(new Font("Tahoma", Font.BOLD, 16));
panelBusqueda.add(labelDniBusqueda);

MaskFormatter formatterBusquedaDNI = null;
try {
formatterBusquedaDNI = new MaskFormatter("########U");
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
formatterBusquedaDNI
.setValidCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZ012 3456789");
txtfdBusquedaDni = new JFormattedTextField(formatterBusquedaDNI);
txtfdBusquedaDni.setHorizontalAlignment(SwingConst ants.CENTER);
txtfdBusquedaDni.setForeground(Color.BLUE);
txtfdBusquedaDni.setFont(new Font("Tahoma", Font.PLAIN, 16));
txtfdBusquedaDni.setColumns(10);
txtfdBusquedaDni.setText(null);
txtfdBusquedaDni.requestFocus();
txtfdBusquedaDni.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent arg0) {
// TODO Auto-generated method stub
setEstado(Constantes.SELECCION_DNI_TELEF);

if (!panelBottom.isVisible()){
panelBottom.setVisible(true);
}

btnBuscar.setText("Buscar DNI / NIF");

txtfdBusquedaDni.setCaretPosition(0);
pintarNormalBultos();
pintarSeleccionBusqueda();
pintarNormalDatosCte();
pintarNormalIntervalos();
txtfdBusquedaTelefono.setEditable(false);
txtfdBusquedaDni.setEditable(true);

ocultarBultos();
ocultarCliente();
ocultarIntervalos();
}

@Override
public void focusLost(FocusEvent arg0) {
// TODO Auto-generated method stub
}
});
txtfdBusquedaDni.addMouseListener(new MouseListener() {

@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
txtfdBusquedaDni.setValue(null);
txtfdBusquedaDni.setText("");
txtfdBusquedaDni.requestFocus();
txtfdBusquedaDni.setCaretPosition(0);
}
});

panelBusqueda.add(txtfdBusquedaDni);

labelTelefonoBusqueda = new JLabel("Telefono:");
labelTelefonoBusqueda.setFont(new Font("Tahoma", Font.BOLD, 16));
panelBusqueda.add(labelTelefonoBusqueda);

MaskFormatter formatterBusquedaTelf = null;
try {
formatterBusquedaTelf = new MaskFormatter("*********");
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
formatterBusquedaTelf.setValidCharacters("01234567 89");
txtfdBusquedaTelefono = new JFormattedTextField(formatterBusquedaTelf);
txtfdBusquedaTelefono.setHorizontalAlignment(Swing Constants.CENTER);
txtfdBusquedaTelefono.setForeground(Color.BLUE);
txtfdBusquedaTelefono.setFont(new Font("Tahoma", Font.PLAIN, 16));
txtfdBusquedaTelefono.setColumns(10);
txtfdBusquedaTelefono.setText(null);
txtfdBusquedaTelefono.addFocusListener(new FocusListener() {

@Override
public void focusGained(FocusEvent arg0) {
// TODO Auto-generated method stub
setEstado(Constantes.SELECCION_DNI_TELEF);

btnBuscar.setText("Buscar Telefono");

txtfdBusquedaTelefono.setCaretPosition(0);
pintarNormalBultos();
pintarSeleccionBusqueda();
pintarNormalDatosCte();
pintarNormalIntervalos();
txtfdBusquedaDni.setEditable(false);
txtfdBusquedaTelefono.setEditable(true);

ocultarBultos();
ocultarCliente();
ocultarIntervalos();

if (!panelBottom.isVisible()){
panelBottom.setVisible(true);
}
}

@Override
public void focusLost(FocusEvent arg0) {
// TODO Auto-generated method stub
}
});
txtfdBusquedaTelefono.addMouseListener(new MouseListener() {

@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
txtfdBusquedaTelefono.setValue(null);
txtfdBusquedaTelefono.setText("");
txtfdBusquedaTelefono.requestFocus();
txtfdBusquedaTelefono.setCaretPosition(0);
}
});

panelBusqueda.add(txtfdBusquedaTelefono);

btnBuscar = new JButton("Buscar");
btnBuscar.addActionListener(new BuscarClienteAction());
btnBuscar.setFont(new Font("Tahoma", Font.BOLD, 16));
panelBusqueda.add(btnBuscar);
}

...

JFrame open Function:


Frame frame = (Frame) LNXCo.getInstance().getFrame();

try {
frame .setUndecorated(true);
} catch (Exception exc) {
// TODO: handle exception
}
frame .setBounds(0, 0,
java.awt.Toolkit.getDefaultToolkit()
.getScreenSize().width,
java.awt.Toolkit.getDefaultToolkit()
.getScreenSize().height);
frame .setAlwaysOnTop(true);
frame .setVisible(true);

frame .getTxtfdBusquedaDni()
.requestFocus();
frame .getPanelBottom().setVisible(
true);
frame .toFront();
frame .setVisible(true);