Autor Tema: ejemplo eventos java actionPerformed, jcombobox jcheckbox jradiobutton, jbutton  (Leído 9886 veces)

charmedever

  • Puede escribir pero no modificar ni borrar
  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Muchas gracias amigo segui tu consejo y lo resolvi por mi cuenta  ;D
« Última modificación: 03 de Julio 2014, 09:23 por Alex Rodríguez »

Manuel Sierra

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
Re:Interfaz Venta Articulos
« Respuesta #1 en: 20 de Julio 2012, 10:37 »
Hola Charmedever:

En principio es que tenías mal programado el código. Creabas una variable precio internamente en el ActionListener en vez de coger la variable global.

También a la hora de calcular el precio, no lo multiplicabas por el valor del interes correspondiente, sino por 0.04%.

Para el plazo no utilizabas la misma variable sino tenias varias y despues el grupo de botones para los radio buttons no lo tenias creado, con lo cual podias piinchar a la vez en varios plazos.

Todo esto hacía además que no funcionara las cosas como debían.

Cuando nos enfrentamos a una aplicación ya de cierto tamaño, puede ser una tarea muy dura el enfrentarnos a todos los problemas de golpe, y es mejor ir pasito a pasito pero seguros de que el componente hace lo que tiene que hacer en tal evento, o que recuperamos el valor correspondiente en tal paso del código.

Seguramente se puede refinar todavía un poco más el código, pero te voy a pasar mi solución al problema.

Aunque antes yo si fuera tú, con los comentarios que te he echo antes, intentaría hacer la solución al problema por mi cuenta, así aprenderás mucho más.

A continuación mi solución por si te atascas espero te sirva de ayuda.

Código: [Seleccionar]
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
import javax.swing.border.Border;
class ExamenPractico extends JFrame
{
    JPanel p1,p2,p3;
    JLabel e1,e2,e3;
    JComboBox cb;
    JTextField t;
    JCheckBox ck;
    JRadioButton rb1,rb2,rb3;
    ButtonGroup btgroup;
    JButton b1,b2;
    Border t1,t2,t3;
    String articulo []= {"Pantalla LCD","Teatro en casa","Minicomponente"};
    BorderLayout bL;
    double precio; String producto; int plazo;
    JTextArea txt;
    ExamenPractico ()
    {
        p1 = new JPanel ();
        t1 =BorderFactory.createTitledBorder("Articulo");
        p1.setBorder(t1);
        p2 = new JPanel ();
        t2 =BorderFactory.createTitledBorder("Plazo");
        p2.setBorder(t2);
        p3 = new JPanel ();
        t3 =BorderFactory.createTitledBorder("Imprimir");
        p3.setBorder(t3);
        e1 = new JLabel ("Descripcion");
        e2 = new JLabel ("Precio $");
        e3 = new JLabel ("Interes");
        cb = new JComboBox (articulo);
        t = new JTextField (10);
        ck = new JCheckBox ("4%",true);
        rb1 = new JRadioButton ("6 meses",false);
        rb2 = new JRadioButton ("12 meses", false);
        rb3 = new JRadioButton ("18 meses",false);
        btgroup = new ButtonGroup();
        btgroup.add(rb1);
        btgroup.add(rb2);
        btgroup.add(rb3);
        b1 = new JButton ("Pago mensual");
        b2 = new JButton ("Limpiar");
        txt = new JTextArea ();
        bL = new BorderLayout (10,10);
        setLayout(bL);
        add(p1);add(p2);add(p3);
        p1.setLayout(new GridLayout(3,1));
        p2.setLayout(new GridLayout (3,1));
        p1.add(e1); p1.add(cb); p1.add(e2);p1.add(t); p1.add(e3); p1.add(ck);
        p2.add(rb1); p2.add(rb2); p2.add(rb3);
        p3.add(b1);p3.add(b2);
        add (p1, BorderLayout.NORTH);
        add (p2, BorderLayout.CENTER);
        add (p3, BorderLayout.SOUTH);
        t.addActionListener(new ActionListener ()
        {
            @Override
            public void actionPerformed (ActionEvent r)
            {
                if (r.getSource()==t)
                {
                    precio=Double.parseDouble(t.getText());
                    if(ck.isSelected())
                    {
                        precio=precio*1.04;
                    }
                   
                    t.setText(String.valueOf(precio));
                   
                }
            }
                   
        });
        rb1.addItemListener (new ItemListener ()
        {
            @Override
            public void itemStateChanged (ItemEvent i)
            {
                if (i.getSource()==rb1)
                {
                    plazo = 6;
                }
            }
        });
        rb2.addItemListener (new ItemListener ()
        {
            @Override
            public void itemStateChanged (ItemEvent i)
            {
                if (i.getSource()==rb2)
                {
                    plazo = 12;
                }
            }
        });
        rb3.addItemListener (new ItemListener ()
        {
            @Override
            public void itemStateChanged (ItemEvent i)
            {
                if (i.getSource()==rb3)
                {
                    plazo = 18;
                }
            }
        });
        b1.addActionListener(new ActionListener ()
        {
            double pagomensual;
            @Override
            public void actionPerformed (ActionEvent c)
            {
                if (c.getSource()==b1)
                {
                    pagomensual=precio/plazo;
                    JOptionPane.showMessageDialog(txt, "Articulo: "+cb.getSelectedItem().toString() +"\n" +"Plazo: "+plazo +" meses. Pago mensual: "+pagomensual);
                }
            }
        });
    }
}

public class Programa
{
    public static void main (String []args)
    {
        ExamenPractico e = new ExamenPractico ();
        e.setTitle("Punto de Venta");
        e.setVisible(true);
        e.setSize(900,500);
        e.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

charmedever

  • Puede escribir pero no modificar ni borrar
  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
=)
« Respuesta #2 en: 20 de Julio 2012, 20:05 »
 ;D ;)
Eres mi idolo!!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".