Java - Foco de una jtext en ventana modal

 
Vista:

Foco de una jtext en ventana modal

Publicado por Javi (1 intervención) el 01/02/2007 13:49:41
Hola, gracias por leerlo.

Tengo una ventana Principal y cuando pulso un boton de esta, se habre otra Ventana Secundaria que tiene una caja de texto.

Me gustaria que cuando se pulse sobre el boton de la ventana principal y aparece la ventana secundaria el foco se ponga en la caja de texto de esta ventana.

Lo he hecho y funciona, pero si a la ventana secundaria le pongo la propiedad setmodal = true, no me pone el foco.

Les dejo el ejemplo sencillo a ver si me pueden ayudar, gracias:

####################################################################
VENTANA PRIMARIA CODIGO
####################################################################

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;

public class Dialogo extends JDialog {

private JPanel jContentPane = null;

private JButton jButton = null;

private Secundaria uno = null;

private JLabel jLabel = null;

/**
* This is the default constructor
*/
public Dialogo() {
super();
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
uno = new Secundaria(this);
}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(8, 5, 259, 29));
jLabel.setText("Principal");
jLabel.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 18));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButton(), null);
jContentPane.add(jLabel, null);
}
return jContentPane;
}

private void mostrar() {

this.setVisible(true);
}

/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new java.awt.Rectangle(37,88,229,39));
jButton.setText("mostrar ventana Secundaria");
jButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {

ver();
}
});
}
return jButton;
}

private void ver() {
uno.mostrar();
}

public static void main(String args[]) {
Dialogo obj = new Dialogo();
obj.setVisible(true);
}

}
####################################################################
VENTANA SECUNDARIA CODIGO
####################################################################

import java.awt.Dialog;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Secundaria extends JDialog {

private JPanel jContentPane = null;

private JTextField jTextField = null;

private JLabel jLabel = null;

private Dialog dialog = null;

private JTextField jTextField1 = null;

private JLabel jLabel1 = null;

private JLabel jLabel2 = null;

private JButton jButton1 = null;

private JTextArea jTextArea = null;

public Secundaria(Dialog dialogA) {
super(dialogA);
dialog = dialogA;
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(372, 246);
this.setModal(true);
this.setContentPane(getJContentPane());
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent e) {
System.out.println("windowOpened()"); // TODO Auto-generated
// Event stub
// windowOpened()
}

public void windowClosing(java.awt.event.WindowEvent e) {
cerrar();
}
});
this.addPropertyChangeListener("visible",
new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent e) {
System.out.print("Visible");
ver();
}
});

this.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent e) {
// aca le das el foco al objeto que quieras mediante
// requestFocus()
jTextField.requestFocus();
System.out.println("paso por aki");
}
});

}

private void ver() {

this.jTextField.requestFocus();
}

private void cerrar() {

}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel2 = new JLabel();
jLabel2.setBounds(new java.awt.Rectangle(4, 47, 156, 16));
jLabel2.setForeground(java.awt.Color.white);
jLabel2.setText("Deberia salir aqui-->");
jLabel1 = new JLabel();
jLabel1.setBounds(new java.awt.Rectangle(1, 84, 218, 23));
jLabel1.setForeground(java.awt.Color.white);
jLabel1.setText("Dale el foco aqui y cierra la ventana");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(45, 5, 121, 27));
jLabel.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 18));
jLabel.setForeground(java.awt.Color.white);
jLabel.setText("Secundaria");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.setBackground(new java.awt.Color(0, 102, 51));
jContentPane.add(getJTextField(), null);
jContentPane.add(jLabel, null);
jContentPane.add(getJTextField1(), null);
jContentPane.add(jLabel1, null);
jContentPane.add(jLabel2, null);
jContentPane.add(getJTextArea(), null);

}
return jContentPane;
}

/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new java.awt.Rectangle(166, 41, 83, 24));
}
return jTextField;
}

public void mostrar() {
this.setVisible(true);
jTextField.setFocusable(true);

this.jTextField.requestFocus();

}

/**
* This method initializes jTextField1
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField1() {
if (jTextField1 == null) {
jTextField1 = new JTextField("a");
jTextField1.setBounds(new java.awt.Rectangle(226, 84, 41, 23));
}
return jTextField1;
}

/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(20, 131, 340, 68));
jTextArea
.setText("Siempre que se abra la ventana el foco se deberia \n poner en la caja de texto1, pero si la ventana es \n modal no lo hace.");
}
return jTextArea;
}

} // @jve:decl-index=0:visual-constraint="10,10"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Foco de una jtext en ventana modal

Publicado por Angel (537 intervenciones) el 01/02/2007 17:04:36
No se si esto te servirá de ayuda, pero en esta página tienes algo de informacion sobre el modificador "modal" en ventanas swing
http://www.javahispano.org/news.item.action?id=559083498

Suerte y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar