lunes, 21 de noviembre de 2011

Formularios en Java. Componentes (I)

En esta entrada os dejo un sencillo ejemplo del uso de varios componentes Swing que podemos añadir a nuestros formularios. Los componentes usados son:
  • JButton.
  • JLabel.
  • JTextField.
  • JPasswordField.
He usado los métodos más comunes de estos componentes, tienen mucho más, así que si quieres hacer algo en particular, simplemente hay que investigar un poco a ver si se puede con todas las opciones que ofrecen. Además, en este ejemplo no he trabajado con "Layouts" (hablaré brevemente de ellos y pondré ejemplos de varios en la próxima entrada), sino que los componentes se han colocado en el formulario mediante coordenadas.

@SuppressWarnings("serial")
public class ComponentesFormI extends JFrame {
 
 //Componentes del formulario
 private JButton cerrarButton, activarButton;
 private JLabel nombreLabel, passwordLabel;
 private JTextField nombreText;
 private JPasswordField password;
 
 public ComponentesFormI() {
  initForm();
  initComponents();
  setVisible(true);
 }

 private void initForm() {
  setTitle("Componentes de los formularios (I)");
  setSize(640, 480);
  setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
  addWindowListener(new WindowAdapter() {
   //Cuando se "cierre", se ejecutará el método onWindowClosing(e)
   public void windowClosing(WindowEvent e) { onWindowClosing(e); }
  });
  setLocationRelativeTo(null);
  //Para que no se pueda redimensionar
  setResizable(false);
 }

 private void initComponents() {
  cerrarButton = new JButton("Cerrar");
  //Indicamos las coordenadas y las dimensiones del componente
  //Cuando veamos los layouts no será necesario indicar las coordenadas
  cerrarButton.setBounds(500, 380, 100, 30);
  cerrarButton.setToolTipText("Al pulsarlo, se da la opción de cerrar el formulario.");
  //Especificamos la tecla que puede activar este botón: Alt + C
  cerrarButton.setMnemonic(KeyEvent.VK_C);
  cerrarButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) { onCerrarButtonActionPerformed(e); }
  });
  
  activarButton = new JButton("Activar");
  activarButton.setBounds(250, 135, 100, 30);
  activarButton.setToolTipText("Al pulsarlo, activa los cuadros de texto.");
  activarButton.setMnemonic(KeyEvent.VK_A);
  activarButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) { onActivarButtonActionPerformed(e); }
  });
  
  nombreLabel = new JLabel("Nombre:");
  nombreLabel.setBounds(50, 50, 150, 50);
  //Para que se vea el color de fondo
  nombreLabel.setOpaque(true);
  nombreLabel.setBackground(Color.MAGENTA);
  nombreLabel.setVerticalAlignment(JLabel.CENTER);
  nombreLabel.setHorizontalAlignment(JLabel.CENTER);
  
  passwordLabel = new JLabel("Contraseña:");
  passwordLabel.setBounds(50, 200, 150, 50);
  passwordLabel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
  passwordLabel.setVerticalAlignment(JLabel.TOP);
  passwordLabel.setHorizontalAlignment(JLabel.CENTER);
  
  nombreText = new JTextField();
  nombreText.setText("Pulsa el botón \"Activar\" para escribir tu nombre y contraseña.");
  nombreText.setBounds(250, 50, 350, 50);
  nombreText.setEditable(false);
  
  password = new JPasswordField();
  password.setBounds(250, 200, 350, 50);
  password.setEditable(false);
  
  //Los JFrame tienen por defecto el BorderLayout, se lo quitamos para añadir los componentes
  //y que estos se muestren en las coordenadas que hemos indicado
  getContentPane().setLayout(null);
  //Añadimos todos los componentes al formulario
  getContentPane().add(cerrarButton);
  getContentPane().add(activarButton);
  getContentPane().add(nombreLabel);
  getContentPane().add(passwordLabel);
  getContentPane().add(nombreText);
  getContentPane().add(password);
 }

 protected void onActivarButtonActionPerformed(ActionEvent e) {
  nombreText.setEditable(true);
  nombreText.requestFocus();
  nombreText.selectAll();
  password.setEditable(true);
 }

 protected void onCerrarButtonActionPerformed(ActionEvent e) {
  cerrar();
 }

 protected void onWindowClosing(WindowEvent e) {
  cerrar();
 }

 private void cerrar() {
  //Cuadro de diálogo para preguntar al usuario si desea salir
  int respuesta = JOptionPane.showConfirmDialog(this, "¿Está seguro de que quiere salir?", "Salir", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
  
  if (respuesta == JOptionPane.YES_OPTION) {
   dispose();
  }
 }

}

Y... ¡tachán! Así es como ha quedado el formulario:


Después de pulsar el botón "Activar":

No hay comentarios:

Publicar un comentario