Ejemplo de Applet con Eventos

Java Dejar un comentario

Un ejercicio perteneciente a un examen de Java. Los eventos se han implementado mediante clases anónimas.
Enunciado: Codifica un applet para la caja de una frutería que “pesa” la fruta e imprime el coste. La frutería vende 9 clases de frutas. Antes de imprimir el coste de la fruta comprada debemos: pulsar el botón PESAR, pulsar el botón de la fruta adquirida, introducir el peso de la misma (en kg.) y pulsar la tecla Intro. Solo entonces podemos imprimir. Además escribimos una línea en la consola con el peso de la fruta comprada, su precio unitario y el total (producto del peso por el precio). El precio (en euros) de un kg. de cada una de las frutas es:

Fruta Manzana Pera Naranja Kiwi Limón Plátano Uva Piña Melocotón
Precio/kg 2.70 2.50 3.50 4.50 3.00 4.00 6.00 5.00 7.00

Ejemplo:

Posible resolución:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class CajaApplet extends Applet {
	// Se declara cada componente
	Label lCoste, lPeso, lMensaje;
	Button botonFruta[];
	Button bPesar, bImprimir;
	TextField tfCoste, tfPeso;
	Panel pNorte, pCentro, pSur;
	// Array de String con los nombres para los botones de frutas
	
	String frutas[] = {"Manzana", "Pera", "Naranja", "Kiwi", "Limón", "Plátano",
			"Uva", "Piña", "Melocotón"};
	
	// Array de double con los precios por kilo de cada fruta
	double precios[] = {2.7, 2.5, 3.5, 4.5, 3, 4, 6, 5, 7};
	int seleccion = 0;		// número del array actualmente seleccionado
	boolean pesando = false;	// determina si se ha pulsado el botón PESAR
	boolean frutaPulsada = false;	// determina si se ha pulsado una fruta
	
	public void init() {
		// Creación de un panel con un Label y un TextField, que se coloca en 
		// la parte norte del Applet, definido como BorderLayout
		setLayout(new BorderLayout());
		pNorte = new Panel();
		lCoste = new Label("COSTE");
		tfCoste = new TextField(10);
		tfCoste.setEnabled(false);
		
		pNorte.add(lCoste);
		pNorte.add(tfCoste);
		
		// Creación de un panel y de un array de botones, para las frutas, 
		// el cuál se coloca en la parte central del Applet.
		
		botonFruta = new Button[frutas.length];
		
		// El panel se establece con un administrador de diseño GridLayout
		// de 4 filas y 3 columnas
		
		pCentro = new Panel(new GridLayout(4, 3));
		for (int i = 0; i < frutas.length; i++) {
			botonFruta[i] = new Button(frutas[i]);
			
			// A cada botón se le añade un 'escuchador de acción'
			// (new ActionListener) mediante el método addActionListener.
			// ActionListener es una interface y por tanto hay que escribir
			// sus métodos, en este caso el método actionPerformed
			
			botonFruta[i].addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					
					// comando contiene el nombre de comando asociado a
					// la acción ejecutada
					String comando = e.getActionCommand();
					if (pesando) {
						for (int i = 0; i < frutas.length; i++) {
							if (comando.equals(botonFruta[i].getLabel())) {
								seleccion = i;
								frutaPulsada = true;								
								lMensaje.setText("Introduzca el peso en kilos");
								tfPeso.setEnabled(true);
							}
						}
					}
				}
			});
			pCentro.add(botonFruta[i]);
		}
		bPesar = new Button("PESAR");
		bPesar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				pesando = true;
				tfPeso.setText("");
				tfCoste.setText("");
				lMensaje.setText("Pulse una Fruta");
			}
		});
		bImprimir = new Button("IMPRIMIR");
		bImprimir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if ((!tfPeso.getText().equals("")) && frutaPulsada) {
					double total;
					total = Double.parseDouble(tfPeso.getText()) * precios[seleccion];
					total = Math.rint(total * 100) / 100;
					tfCoste.setText(String.valueOf(total) + " €");
					pesando = false;
					frutaPulsada = false;
					lMensaje.setText("Pulse PESAR");
					tfPeso.setEnabled(false);
				}
			}
		});
		pCentro.add(bPesar);
		pCentro.add(bImprimir);
		
		pSur = new Panel();
		tfPeso = new TextField(8);
		tfPeso.setEnabled(false);
		tfPeso.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if (frutaPulsada) {
					lMensaje.setText("Pulse Intro tras la cantidad");
				}
			}
		});
		tfPeso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				lMensaje.setText("Pulse IMPRIMIR para ver el coste");
			}
		});
		lPeso = new Label("PESO");
		lMensaje = new Label("Pulse PESAR                               ");
		pSur.add(tfPeso);
		pSur.add(lPeso);
		pSur.add(lMensaje);
		
		add(pNorte, BorderLayout.NORTH);
		add(pCentro, BorderLayout.CENTER);
		add(pSur, BorderLayout.SOUTH);
		
	}
}
Share

Una Respuesta en “Ejemplo de Applet con Eventos”

  1. kilo Dijo:

    Hola no funciona.

Deja un comentario...


WP Tema.
Traducido por Autos
Entradas RSS Comentarios RSS Acceder