Está en la página 1de 5

Universidad José Antonio Páez. Facultad de Ingeniería.

Coordinación de Informática. Programación I. Práctica.

ESCENARIO: FACTURACIÓN CONSUMO DE AGUA.

La empresa encargada del suministro de agua potable en casas y


locales comerciales desea desarrollar un proyecto para llevar a
cabo el proceso de facturación, para lograr esto se debe diseñar
una interface grafica que capture la siguiente información:

Nombre del cliente, Tipo de cliente (R: residencial o C:


3
comercial), Volumen de agua consumida (en m )

Enunciado:
Elabore una interface grafica de usuario que se le suministre la
información antes citada y por cada cliente muestre por el area
de texto:
Nombre del cliente y el pago a realizar por el consumo de agua
realizado.

Consideraciones:
 El pago por el servicio se determinara de acuerdo a lo siguiente:
3 3 3
 Residenciales: 80 m o menos paga 1$, por encima de los 80 m paga a 0.5 $ el m adicional.
3 3 3
 Comerciales: 300 m o menos paga 3$, por encima de los 300 m paga a 1.5$ el m adicional.
 La salida por cada entrada queda asi:

Una vez introdusida la informacion del cliente, se selecciona el boton Agregar y en el area de texto (JTextArea) se
colocara el nombre y monto a pagar por el cliente procesado, de inmediato el cursor sera colocado en el cuadro de
texto del nombre quedando resaltado texto de dicho cuadro, en la medida que nos movamos entre los cuadros de
texto este se iran resaltando facilitando de esta manera la entrada de los datos ya que no tendra que borrar el
contenido de los cuadros de texto para introducir la nueva informacion.
Al seleccionar el boton Borrar se borrara toda la informacion del area de texto asi como las de los cuadros de texto,
quedando el cursor en el cuadro de texto del nombre.

Analisis de proyecto:
En esta proyecto no vamos a usar manejadores de distribucion (Layout Manager), esto implica que tendremos que ubicar
cada componente de forma personalizada, adicionalmente introduciremos el uso del componente area de texto (JTextArea)
este componente se diferencia de el cuadro de texto(JTexteField) de que permite mostrar varias lineas de texto, que en el
caso del cuadro de texto este muestra una sola.
Crearemos dos clases, Ventana y Principal, en un paquete que llamaremos marco. A continuacion el codigo :
Universidad José Antonio Páez. Facultad de Ingeniería.
Coordinación de Informática. Programación I. Práctica.

Clase ventana:

Comentarios:
Línea 1: se indica que la clase quedara definida dentro del paquete marco.
Línea 2 a 5: se importa la librerias requeridas par el desarrollo de la GUI’s, la ultima de estas no permitira usar las opcines
para garatizar el formato tanto en cuadros de texto como de areas de texto.
Línea 8: se define el encabzado de la calse Ventana la cual extiende de la clase JFrame.
Líneas 19 a 14: se indican los componentes que formaran la interface: 3 JLabel, 3 JTextField, 2 JButton, un JTextArea y el
contenedor de la Ventana.

Línea 16: se define el encabezado del constructor.


Línea 18: mediante super se invoca el constructor del JFrame para que reciba el titulo de la Ventana.
Línea 19: se establece las dimenciones que tendra la Ventana, 280 de ancho por 380 de alto.
Línea 20: con esta instrucción se indica que la cerrar la ventana se termina la ejecucion del proyecto, de no hacerlo asi se
cierra la ventana pero el programa sigue activo en memoria.
Línea 21: indica que la ventana sera loclaizada en el centro de la pantalla.
Linea 22: indica que no se podra cambiar el tamaño de la ventana, de los tres botones ubicados en la ezquina superior
derecha, el del medio, estar desabilitado, tampoco se podra variar el tamaño usando el raton.
Línea 23: se define que el contenedor de la ventana sera un ContentPane.
Línea 24: se indica que la ventana no tendra asociado un LayoutManager (manejador de distribucion).
Universidad José Antonio Páez. Facultad de Ingeniería.
Coordinación de Informática. Programación I. Práctica.

Línea 26: definimos el JLabel referenciado por l1, al construtor se le pasa el texto que mostrara.
Línea 27: definimos el JTextField referenciado por t1, al constructor se le pasa la cantidad de caractres que mostrara el
componente, en este caso cinco caracteres.
Línea 28 a 29: se pocisionan los componentes en la ventana usando el metodo setBounds(x,y, ancho, alto), el cual recibe
como argumentos las coordenadas x, y y el ancho y el alto del componente. El método indica que el Componente tendrá un
tamaño y estará posicionado de acuerdo a una caja o rectángulo, cuyos lados son paralelos a los ejes X e Y.

Por ejemplo: l1.setBounds(50,20,60,25); indica que el rectángulo donde se posicionara l1, tiene en el eje x 50 pixel, en el eje
y 20 pixel, teniendo en cuenta que el eje Y crece hacia abajo, siendo este las coordenadas del punto ubicado en su esquina
superior izquierda, finalmente especifica un ancho de 60 pixel y un alto de 25 pixel, para el objeto que se esté posicionando
en el contenedor.
Línea 40: se agregan los componentes l1 y t1 al contenedor c. Este proceso se repite entre las líneas 31 a la 45, para las
etiquetas, cuadros de texto y botones.
Línea 46: se define el JTextArea referenciado por ta, su constructor recibe una cadena con el texto inicial con salto de línea,
además se indica la cantidad de filas y columnas que mostrar el área de texto, 10 filas y 30 columnas.
Línea 47: posicionamos el área de texto en el contenedor.
Línea 48: deshabilitamos el componente del tal forma que no se pueda modificar su contenido.
Línea 49: agregamos el área de texto al contenedor c.

Línea 50 a 64: asociamos los cuadros de texto al oyente FocusListener, este oyente captura cad vez que un componente
recibe el foco, esto en el caso de los cuadros de texto recibe o pierde el cursor, se redefine el método focusGained(), (recibe
Universidad José Antonio Páez. Facultad de Ingeniería.
Coordinación de Informática. Programación I. Práctica.
el cursor) y para cada cuadro de texto se ejecuta el método selectAll(), el cual selecciona todo el texto del cuadro del texto
cuando este recibe el cursor.

Línea 65 a 88: asociamos el botón b1 al oyente ActionListener, el cual recibe como argumento un objeto de la clase
ActionListener, en el cual redefinimos el método actionPerformed(),Línea 67, creamos un objeto de la clase DecimalFormat
el cual será referenciado por f, el constructor recibe una cadena con el formato a usar, vemos dos componentes separador
por un punto y coma, la primera parte se define para el valor positivo y la segunda para el valor negativo, el símbolo # indica
la posición de un digito, en el caso de cero, también indica la posición de un digito, ahora si el digito no esta será ocupado
por cero, en caso del # no se coloca nada. Líneas 68 a 69, de declaran las variables que serán usadas para guardar la
información a obtener de los cuadros de texto, Línea 70 a 72, se procede a transferir la información de los cuadros de texto a
las variables, Línea 73 a 83, con esta estructura condicional establecemos el pago por el consumo de agua en función del tipo
de cliente, Línea 84, se le asigna a la variable salida la cadena generada por String.format(), algo semejante a lo que
hacemos con printf, al valor numérico le aplicamos el formato definido en el objeto f, Línea 85, agregamos la cadena salida al
área de texto con un salto de línea, Línea 86, se manda el foco al cuadro de texto t1.

Línea 89 a 97: asociamos el botón b2 al oyente ActionListener, el cual recibe como argumento un objeto de la clase
ActionListener, donde redefinimos el método actionPerformed(), Líneas 91 a 95, se procede a borrar el contenido de los
cuadros de texto y del área de texto.
Línea 98 fin del constructor.
Línea 101: fin de la clase Ventana.
Universidad José Antonio Páez. Facultad de Ingeniería.
Coordinación de Informática. Programación I. Práctica.

Clase Principal:

También podría gustarte