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"
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


0