Guia 1 Interfaz Gráfica
Guia 1 Interfaz Gráfica
Interfaz a construir
Panel superior
Panel medio
Panel inferior
Labels
textField
comboBox
Botón
1. El primer paso es Crear proyecto en Eclipse, para la clase Cuadrado. Para ello de clic en File
New Java Project Cuadrado Finish
2. A continuación cree 3 paquetes:
co.uniquindio.programacion1.cuadrado.view
co.uniquindio.programacion1.cuadrado.model
co.uniquindio.programacion1.cuadrado.aplicación
Repita este mismo proceso para crear el paquete co.uniquindio.programacion1.cuadrado.model
3. Luego debe construir dentro del paquete model la clase Cuadrado
Observe que la única diferencia con el código que se ha digitado previamente en clase es que las
funciones no tienen la palabra static.
package co.uniquindio.programacion1.cuadrado.model;
public class Cuadrado {
4. A continuación se creará la interfaz gráfica Clic derecho New Other. Luego elija JFrame.
Asigne el nombre de VentanaPrincipal
Observe que Window builder ofrece 2 tipos de vistas : Source y Design
De clic en Diseño. Amplie un poco la Paleta, para que pueda observarla mejor.
5. Observe que existen diferentes layouts. Un layout define la ubicación de los componentes en la
pantalla. De clic sobre el frame y elija Border Layout.
6. Observe que si quiere agregar al frame un componente como un panel, verá lo siguiente. Esta es
la distribución del border Layout. Agregue un panel al frame
7. Luego agregue una etiqueta (Label para el título). Cambie el texto de la etiqueta a Aplicación
para manejar la información de un Cuadrado, puede hacerlo desde el panel Properties que está a
la derecha.
8. La acción realizada generará el siguiente código (Activar vista Source)
La idea es ser ordenados y tener una función por espacio a trabajar. Una para la parte superior,
otra para el centro y otra para la parte inferior. Por ende, debemos modificar el código.
9. Se debe modificar el código para que quede de la siguiente forma:
Antes
/**
* Create the frame.
*/
public VentanaPrincipal() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 653, 395);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
//se renombra panelSuperior clic derecho Refactor Rename
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.NORTH);
//se renombra a lblTitulo
JLabel lblNewLabel = new JLabel("Aplicacion para un Cuadrado");
panel.add(lblNewLabel);
}
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
VentanaPrincipal frame = new
VentanaPrincipal();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public VentanaPrincipal() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 653, 395);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
crearPanelSuperior();
12. Debemos entonces modificar para que esto nos quede en una función aparte,
que se va a llamar crearPanelMedio, quedando de la siguiente forma:
16. El siguiente paso es renombrar estos componentes. Puede hacerlo desde la ventana o
desde la vista de código. Desde esta última, el paso es seleccionar la variable clic derecho
refactor Rename deje los nombres que aparecen en verde.
}
17. Para configurar las opciones del combobox agregue las siguientes líneas.
comboBox_Operacion.addItem("Area");
comboBox_Operacion.addItem("Perimetro");
comboBox_Operacion.addItem("Hipotenusa");
public VentanaPrincipal() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 653, 395);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
crearPanelSuperior();
crearPanelMedio();
}
18. Si todo va bien, y ejecuta la aplicación (botón Run de la barra principal), debe salir lo
siguiente:
public VentanaPrincipal() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 653, 395);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
crearPanelSuperior();
crearPanelMedio();
construyePanelInferior();
}
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
VentanaPrincipal frame = new
VentanaPrincipal();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public VentanaPrincipal() {
miCuadrado = new Cuadrado();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 653, 395);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
crearPanelSuperior();
crearPanelMedio();
construyePanelInferior();
comboBox_Operacion.addItem("Area");
comboBox_Operacion.addItem("Perimetro");
comboBox_Operacion.addItem("Hipotenusa");
21. Debe corregir los errores, seleccionar adicionar métodos sin implementar
Esta acción agrega el método actionPerformed
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
23. El único componente con el que se va a realizar eventos es con el botón, por ende,
debemos agregarle oyente al botón
/**
* Se agrega una funcion en la ventana, por cada uno de los metodos de
la logica a llamar
* @param lado
*/
public double hallarArea (double lado)
{
double resultado= miCuadrado.calcularArea(lado);
return resultado;
}
}
public double hallarResultado (int opcion, double lado)
{
double resultado;
if(opcion == 0)
{
resultado= hallarArea(lado);
mostrarMensaje("El area es: "+resultado);
}
else
if(opcion==1)
{
resultado=hallarPerimetro(lado);
mostrarMensaje("El perimetro es: "+resultado);
}
else
{
resultado= hallarHipotenusa(lado);
mostrarMensaje("La hipotenusa es: "+resultado);
}
return resultado;
}
JOptionPane.showMessageDialog(null, mensaje);
}
package co.uniquindio.programacion1.cuadrado.view;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.EventQueue;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import co.uniquindio.programacion1.cuadrado.model.Cuadrado;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
VentanaPrincipal frame = new VentanaPrincipal();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public VentanaPrincipal() {
miCuadrado = new Cuadrado();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 653, 395);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
crearPanelSuperior();
crearPanelMedio();
construyePanelInferior();
comboBox_Operacion.addItem("Area");
comboBox_Operacion.addItem("Perimetro");
comboBox_Operacion.addItem("Hipotenusa");
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource() == botonAceptar)
{
//aqui se lee el lado del campo de texto
double lado= leerDouble(textFieldLado.getText());
//si es cero, area 1--> perimetro 2-->hipotenusa
int seleccionCombo = comboBox_Operacion.getSelectedIndex();
double resultado=hallarResultado(seleccionCombo, lado);
/**
* Se agrega una funcion en la ventana, por cada uno de los metodos de la
logica a llamar
* @param lado
*/
public double hallarArea (double lado)
{
double resultado= miCuadrado.calcularArea(lado);
return resultado;
}
}
public double hallarResultado (int opcion, double lado)
{
double resultado;
if(opcion == 0)
{
resultado= hallarArea(lado);
mostrarMensaje("El area es: "+resultado);
}
else
if(opcion==1)
{
resultado=hallarPerimetro(lado);
mostrarMensaje("El perimetro es: "+resultado);
}
else
{
resultado= hallarHipotenusa(lado);
mostrarMensaje("La hipotenusa es: "+resultado);
}
return resultado;
}
JOptionPane.showMessageDialog(null, mensaje);
}
package co.uniquindio.programacion1.cuadrado.model;