domingo, 3 de abril de 2011

Aplicacion Swing en un Frame Java (11.02.05)

CelsiusMain.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CelsiusMain {
    public static void main(String[] args) {
        //Enviar una tarea al administrador de eventos
        //para que cree y muestre la ventana
         SwingUtilities.invokeLater
         (  new Runnable() {
               public void run() { crearMostrarVentana(); }
            }
         );
    }
    // Metodo para crear una ventana GUI.
    private static void crearMostrarVentana() {
        //Asegurarse que contenga los decorators de una ventana.
        JFrame.setDefaultLookAndFeelDecorated(true);
        //se crea la ventana
        CelsiusContent ventana = new CelsiusContent();
    }
}

CelsiusContent.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CelsiusContent {
    //Componentes de la aplicacion.
    private JTextField celsiusInput;
    private JButton    botonConvertir;
    private JLabel     celsiusLabel;
    private JLabel     fahrenheitLabel;

    // Constructor
    public CelsiusContent() {
        //crear y configurar la ventana.
        JFrame frame = new JFrame("Convertir Celsius a Fahrenheit");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        //definir la dimesion de la ventana.
        Dimension dimension = new Dimension(320, 100);
        frame.setSize(dimension);

        //crear los componentes en el panel.
        Component panel = crearComponentes();

        //agregar el panel al Content Pane.
        frame.getContentPane().add(panel);

        //configurar el boton por defecto.
        //cada vez que se presione enter se invocara este boton
        //se define este boton en el Root Pane.
        frame.getRootPane().setDefaultButton(botonConvertir);

        //mostrar la ventana.
        //frame.pack();
        frame.setVisible(true);
    }

    private Component crearComponentes() {
        //Creando los componentes de la ventana
      celsiusInput    = new JTextField(3);
        botonConvertir  = new JButton("Convertir");
        celsiusLabel    = new JLabel("Celsius", SwingConstants.LEFT);
        fahrenheitLabel = new JLabel("Fahrenheit", SwingConstants.LEFT);

        //Se agrega un manejador de eventos
        BotonListener listener = new BotonListener();
        botonConvertir.addActionListener(listener);

        //Se crea un layout para los componentes del panel
        LayoutManager layout = new GridLayout(2, 2);
        //LayoutManager layout = new FlowLayout();

        //crear y configurar el panel contenedor de la ventana.       
        JPanel panel = new JPanel(layout);

        //agregar los componentes al contenedor.
        panel.add(celsiusInput);
        panel.add(celsiusLabel);
        panel.add(botonConvertir);
        panel.add(fahrenheitLabel);
       
        //agregar un borde vacio alrededor de los labels
        celsiusLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
        fahrenheitLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));

        //agregar un borde vacio alrededor de los componentes de 5 pixeles.
        panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));

        return panel;
    }

    //Clase interna que es un listener de eventos.
    public class BotonListener implements ActionListener {
          public void actionPerformed(ActionEvent event) {
            //obtener el contenido del input
            String texto = celsiusInput.getText();
              //convertir el texto en un numero
              Double celsius = Double.parseDouble(texto);
              //convertir celsius a fahrenheit
              int fahrenheit = (int)(celsius * 1.8 + 32);
              //mostrar los grados fahrenheit en el label
              fahrenheitLabel.setText(fahrenheit + " Fahrenheit");
          }
    }
}

Compartir:

0 comentarios:

Publicar un comentario