Foros del Web » Programación para mayores de 30 ;) » Java »

Pedido de ayuda con aplicación...

Estas en el tema de Pedido de ayuda con aplicación... en el foro de Java en Foros del Web. Hola a todos. Me gustaría que me ayudarán con la siguiente aplicación. La misma, que está escrita en netbeans 6.9, es ejecutada casi a la ...
  #1 (permalink)  
Antiguo 01/09/2010, 20:19
 
Fecha de Ingreso: noviembre-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
Pedido de ayuda con aplicación...

Hola a todos. Me gustaría que me ayudarán con la siguiente aplicación. La misma, que está escrita en netbeans 6.9, es ejecutada casi a la perfección. Estoy utilizando dos clases internas como manejadores de eventos (ActionListener), la primera me funciona a la perfección, no entando la segunda, me funciona parcialmente. Deseo, si así es el caso, si el usuario decide continuar con la ejecución de los cálculos, la aplicación vuelva a iniciarse. (Véase el conjunto de sentencias resaltadas en rojo).

El código es el siguiente:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.DecimalFormat;

public class Aplicacion_01 extends JFrame { //implements ActionListener {

private JLabel alturaEtiqueta, // etiqueta para alturaEntrada
pesoEtiqueta, // etiqueta para pesoEntrada
IMCEtiqueta, // etiqueta para mostrar el IMC
infrapeso, // etiqueta para indicar anorexia
bajopeso1, // etiqueta para indicar delgadez moderada.
bajopeso2, // etiqueta para indicar delgadez aceptada.
normal, // etiqueta para indicar pesona normal.
preobeso, // etiqueta para indicar pesona obesita
obeso1, // etiqueta para indicar pesona obesa.
obeso2, // etiqueta para indicar pesona pasada.
obeso3, // etiqueta para indicar pesona pasada.
seguir; // etiqueta para continuar o no.

private JTextField alturaEntrada, // tomar la altura del usuario
pesoEntrada; // tomar el peso del usuario

private JButton calcularBoton, // el usuario pulsa este botón
Si, // etiqueta que permite continuar.
No; // etiqueta que permite salir.
private JPanel Continuar, Boton;
Container contenidoBoton = getContentPane();

public Aplicacion_01() {
// Procede a delimitar el marco.
setTitle("Determinación del ìndice corporal.");
setLayout(new FlowLayout()); // establece el esquema del marco.
contenidoBoton.setBackground(Color.white);
setSize(400,220);
setLocationRelativeTo(null);

// Comienza a crear las ventanas.
alturaEtiqueta = new JLabel("Su altura (en metros, p.e. 1.88):");
alturaEntrada = new JTextField(5);
pesoEtiqueta = new JLabel(" Su peso (en kilogramos, p.e. 180.5):");
pesoEntrada = new JTextField(5);
calcularBoton = new JButton(" Calcula el IMC ");
calcularBoton.setBackground(Color.BLUE);
calcularBoton.setForeground(Color.YELLOW);
IMCEtiqueta = new JLabel("Este es su IMC:");
IMCEtiqueta.setForeground(Color.MAGENTA);

// Identifica los diversos aspectos de las caracterìsticas de una persona.
infrapeso = new JLabel();
infrapeso.setText("Usted se encuentra en estado anoréxico.");
infrapeso.setForeground(Color.darkGray);

bajopeso1 = new JLabel();
bajopeso1.setText("Usted se encuentra en estado delgadez moderada.");
bajopeso1.setForeground(Color.red);

bajopeso2 = new JLabel();
bajopeso2.setText("Usted se encuentra en estado delgadez aceptable.");
bajopeso2.setForeground(Color.yellow);

normal = new JLabel();
normal.setText("Usted se encuentra bajo un peso normal.");
normal.setForeground(Color.blue);
preobeso = new JLabel();
preobeso.setText("Usted se encuentra un poco gordito(a).");
preobeso.setForeground(Color.orange);

obeso1 = new JLabel();
obeso1.setText("Usted se encuentra un poco obeso(a).");
obeso1.setForeground(Color.magenta);

obeso2 = new JLabel();
obeso2.setText("Usted se encuentra en estado de obesidad.");
obeso2.setForeground(Color.red);

obeso3 = new JLabel();
obeso3.setText("Usted se encuentra en estado de obesidad extrema.");
obeso3.setForeground(Color.darkGray);

// Añade las diversas etiquetas.
add(alturaEtiqueta);
alturaEntrada.setBorder(BorderFactory.createLineBo rder(Color.blue,2));
add(alturaEntrada);

add(pesoEtiqueta);
pesoEntrada.setBorder(BorderFactory.createLineBord er(Color.blue,2));
add(pesoEntrada);

add(calcularBoton);
add(IMCEtiqueta);
Calculo calcular = new Calculo();
calcularBoton.addActionListener(calcular);
} // cierre del constructor Aplicacion_01.

public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
Aplicacion_01 figura = new Aplicacion_01();
JOptionPane.showMessageDialog(null, "Esta aplicación muestra el" +
"índice corporal de una persona así \n" +
" como su estado físico actual.", "Objetivo",
JOptionPane.INFORMATION_MESSAGE);
figura.setVisible(true);
figura.setDefaultCloseOperation(JFrame.EXIT_ON_CLO SE);
} // cierre del método main.

private class Calculo implements ActionListener { /* Clase interna para manejar
* eventos de botón. */
public void actionPerformed(ActionEvent evento) { /* Maneja eventos de
* botón. */
DecimalFormat digitos = new DecimalFormat("0.00");
String alturaCadena, pesoCadena, resultado, bajopeso;
double peso, altura;
double imc;

// obtener valores de entrada
alturaCadena = alturaEntrada.getText();
pesoCadena = pesoEntrada.getText();

// convertir la entrada a números
altura = convertirAdouble(alturaCadena);
peso = convertirAdouble(pesoCadena);

// calcular el IMC
imc = calcularIMC(altura, peso);

// mostrar el resultado
resultado = "Su IMC es: " +digitos.format(imc);
IMCEtiqueta.setText(resultado);

// Establece las diversas condiciones de la persona.
if(imc < 16.00) {
add(infrapeso);
continuacion();
}
if(imc < 17.00 && imc >= 16.00) {
add(bajopeso1);
continuacion();
}
if(imc < 18.49 && imc >= 17.00) {
add(bajopeso2);
continuacion();
}
if(imc < 24.99 && imc >= 18.50) {
add(normal);
continuacion();
}
if(imc < 29.99 && imc >= 25.00) {
add(preobeso);
continuacion();
}
if(imc < 34.99 && imc >= 30.00) {
add(obeso1);
continuacion();
}
if(imc < 39.99 && imc >= 35.00) {
add(obeso2);
continuacion();
}
if(imc >= 40.00) {
add(obeso3);
continuacion();
}
} // cierre del método interno actionPerformed.
} // cierre de la clase interna Calculo.

private double convertirAdouble(String cad) {
Double objetoDouble = new Double(cad);
return objetoDouble.doubleValue();
} // cierre del método convertirAdouble.

private double calcularIMC(double altura, double peso) {
double imc;
imc = peso/Math.pow(altura,2);
return imc;
} // cierre del método calcularIMC.

void continuacion() {
Continuar = new JPanel(new BorderLayout());
Boton = new JPanel();
Si = new JButton("Si");
No = new JButton("No");
Si.setBackground(new Color(0,255,31,150));
Si.setForeground(new Color(255,0,0));
No.setBackground(new Color(0,255,31,150));
No.setForeground(new Color(255,0,0));
seguir = new JLabel();
seguir.setText("¿Desea seguir calculando?");
Boton.add(Si);
Boton.add(No);
ControlBoton control = new ControlBoton();
Si.addActionListener(control);
No.addActionListener(control);
add(seguir);
contenidoBoton.add(Continuar);
Continuar.add(Boton, BorderLayout.SOUTH);
} // cierre del método continuacion.

private class ControlBoton implements ActionListener {
public void actionPerformed(ActionEvent evento) {
if(evento.getSource() == Si) {
evento.getActionCommand();
new Aplicacion_01();
} else if (evento.getSource() == No) {
evento.getActionCommand();
salida();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}// cierre del método actionPerformed.
} // cierre de la clase interna privada ControlBoton.

void salida() {
JDialog.setDefaultLookAndFeelDecorated(true);
JOptionPane.showMessageDialog(null, "Ha sido un placer haber " +
"trabajado con usted. Hasta luego...", "Salida",
JOptionPane.INFORMATION_MESSAGE);
} // cierre del método salida.
} // cierre de la clase Aplicacion_01.

Me podrían indicar y corregir de ser posible en donde consiste mi falla.

LEs agradezco de antemano, cualquier ayuda brindada
  #2 (permalink)  
Antiguo 02/09/2010, 06:10
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Pedido de ayuda con aplicación...

¿Y qué es lo que no hace que debería hacer?

Me da la impresión de que te abre una ventana nueva pero no te cierra la vieja. ¿es eso?

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: pedido
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:37.