Eventos desde otra clase en java

Hola amigos:
Estoy desarrollando un sistema de punto de venta y decidí cambiar un poco de estilo en lo visual y estructura de interfaz. Por ejemplo en los ABMs al darle click en Cliente del menu principal me trae un formulario(método) de otra clase en un JPanel dentro de mi clase principal donde esta mi menu principal, pero al querer darle evento a mis botones ya sean nuevo, guardar, modificar, eliminar no hace nada. Quiero saber como solucionar este problema urgente por favor. Al realizar esta operación pero con un JDialog por ejemplo funciona pero mi idea es que los ABMs muestren en un JPanel interno simulando un IFrame.
Desde ya muchas gracias.
Si hay dudas acerca de mi pregunta puedo pasarles el código..
Atentamente.
Matias Alvarenga

1 respuesta

Respuesta
1
Siento que me falta un poco de información.
Sería buena idea lo del código.
Este es mi código de menu principal
package aplicacion;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import aplicacion.abm.*;
import configuracion.*;
public class MenuPrincipal extends JFrame implements ActionListener {
private static final long serialVersionUID = 3842797615288630479L;
    //Declaracion de variables
int yp=25;
private JPanel panelPrincipal, panelIzquierdo;
private JButton btnClientes, btnFuncionarios, btnProductos, btnVentas, btnCreditos,
                btnCompras, btnCaja, btnConfiguraciones, btnCerrarSesion, btnNuevaVenta,
                btnNuevaCompra, btnInformes, btnAdelantos, btnHistorico;
private JLabel lblLogo;
private abmClientes menuCliente = new abmClientes();
private abmFuncionarios menuFuncionario = new abmFuncionarios();
private abmProductos menuProducto = new abmProductos();
    public MenuPrincipal(){
        Componentes();
    }
    public void Componentes(){
        //panel del menu principal
        panelPrincipal = new JPanel();
        panelPrincipal.setLayout(null);
        panelPrincipal.setBorder(BorderFactory.createTitledBorder(""));
        panelIzquierdo = new JPanel();
        panelIzquierdo.setLayout(null);
        panelIzquierdo.setBorder(BorderFactory.createTitledBorder("Menu Navegación"));
        //botones del menu principal
        btnClientes = new JButton("Clientes"); btnClientes.addActionListener(this);
        btnFuncionarios = new JButton("Funcionarios"); btnFuncionarios.addActionListener(this);
        btnProductos = new JButton("Productos"); btnProductos.addActionListener(this);
        btnVentas = new JButton("Ventas");
        btnCreditos = new JButton("Créditos");
        btnCompras = new JButton("Compras");
        btnCaja = new JButton("Caja");
        btnConfiguraciones = new JButton("Configuraciones");
        btnCerrarSesion = new JButton("Cerrar Sesión"); btnCerrarSesion.addActionListener(this);
        btnNuevaVenta = new JButton("Nueva Venta");
        btnNuevaCompra = new JButton("Nueva Compra");
        btnAdelantos = new JButton("Adelantos");
        btnInformes = new JButton("Informes");
        btnHistorico = new JButton("Histórico Clientes");
        // label Logo
        lblLogo = new JLabel();
        lblLogo.setIcon(new Iconos().Logo());
        //ubicacion elementos
    panelPrincipal.setBounds(30, yp, 1230, 70);
        btnClientes.setBounds(250, yp, 90, 25);
        btnFuncionarios.setBounds(345, yp, 110, 25);
        btnProductos.setBounds(460, yp, 100, 25);
        btnVentas.setBounds(565, yp, 90, 25);
        btnCreditos.setBounds(660, yp, 100, 25);
        btnCompras.setBounds(765, yp, 100, 25);
        btnCaja.setBounds(870, yp, 70, 25);
        btnConfiguraciones.setBounds(945, yp, 130, 25);
        btnCerrarSesion.setBounds(1080, yp, 130, 25);
    panelIzquierdo.setBounds(30, 120, 200, 400);
        btnNuevaVenta.setBounds(25, 30, 150, 25);
        btnNuevaCompra.setBounds(25, 70, 150, 25);
        btnInformes.setBounds(25, 110, 150, 25);
        btnAdelantos.setBounds(25, 150, 150, 25);
        btnHistorico.setBounds(25, 190, 150, 25);
        lblLogo.setBounds(40, 220, 122, 165);
        add(panelPrincipal);
        panelPrincipal.add(btnClientes);
        panelPrincipal.add(btnFuncionarios);
        panelPrincipal.add(btnProductos);
        panelPrincipal.add(btnVentas);
        panelPrincipal.add(btnCreditos);
        panelPrincipal.add(btnCompras);
        panelPrincipal.add(btnCaja);
        panelPrincipal.add(btnConfiguraciones);
        panelPrincipal.add(btnCerrarSesion);
        add(panelIzquierdo);
        panelIzquierdo.add(btnNuevaVenta);
        panelIzquierdo.add(btnNuevaCompra);
        panelIzquierdo.add(btnInformes);
        panelIzquierdo.add(btnAdelantos);
        panelIzquierdo.add(btnHistorico);
        panelIzquierdo.add(lblLogo);
        setLayout(null);
        setExtendedState(MAXIMIZED_BOTH);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent ex) {
        if(ex.getSource() == btnClientes){
            try{
                menuCliente.Components();
                add(menuCliente);
                menuCliente.setBounds(350, 120, 740, 400);
                menuFuncionario.setVisible(false);
                menuProducto.setVisible(false);
            }catch (Exception exp) {
                JOptionPane.showMessageDialog(null, "error de panel");
            }    
        }
        if(ex.getSource() == btnFuncionarios){
            try{
                menuFuncionario.Components();
                add(menuFuncionario);
                menuFuncionario.setBounds(350, 120, 740, 400);
                menuCliente.setVisible(false);
                menuProducto.setVisible(false);
            }catch (Exception exp) {
                JOptionPane.showMessageDialog(null, "error de panel");
            }
        }
        if(ex.getSource() == btnProductos){
            try{
                menuProducto.Components();
                add(menuProducto);
                menuProducto.setBounds(350, 120, 740, 400);
                menuCliente.setVisible(false);
                menuFuncionario.setVisible(false);
            }catch (Exception exp) {
                JOptionPane.showMessageDialog(null, "error de panel");
            }
        }
        if(ex.getSource() == btnCerrarSesion){
            this.dispose();
            new Login();
        }
    }
}
//Este es uno de los abms a que llama en un jpanel dentro del frame del menu (es otra clase)
package aplicacion.abm;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.ParseException;
import javax.swing.*;
import javax.swing.text.MaskFormatter;
public class abmClientes extends JPanel implements ActionListener{    
    private static final long serialVersionUID = -3707533980471101243L;
    private JLabel lblCodigo, lblNombre, lblApellido, lblCI, lblSexo, lblFechaNac,
            lblLugarNac, lblNacion, lblTel, lblCel, lblEmail, lblDireccion;
    private JTextField txtCodigo, txtNombre, txtApellido, txtCI, txtSexo, txtLugarNac,
            txtNacion, txtTel, txtCel, txtEmail, txtDireccion;
    private JFormattedTextField txtFechaNac;
    private MaskFormatter mskFechaNac;
    private JButton btnNuevo, btnGuardar, btnModificar, btnEliminar, btnCancelar;
    private int x=30, w=100, h=25;
    public abmClientes(){
        Components();
    }
    public void Components(){
        //panel
        setBorder(BorderFactory.createTitledBorder("Registro de Clientes"));
        //labels
        lblCodigo = new JLabel("Código:");
        lblNombre = new JLabel("Nombre:");
        lblApellido = new JLabel("Apellido:");
        lblCI = new JLabel("CI:");
        lblSexo = new JLabel("Sexo:");
        lblFechaNac = new JLabel("Fecha de Nacimiento:");
        //mascara de fecha
        try {
            mskFechaNac = new MaskFormatter("##/##/####");
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        lblLugarNac = new JLabel("Lugar de Nacimiento:");
        lblNacion = new JLabel("Nacionalidad:");
        lblTel = new JLabel("Teléfono:");
        lblCel = new JLabel("Celular:");
        lblEmail = new JLabel("Email:");
        lblDireccion = new JLabel("Dirección:");
        //campos
        txtCodigo = new JTextField();
        txtNombre = new JTextField();
        txtApellido = new JTextField();
        txtCI = new JTextField();
        txtSexo = new JTextField();
        txtFechaNac = new JFormattedTextField(mskFechaNac);
        txtLugarNac = new JTextField();
        txtNacion = new JTextField();
        txtTel = new JTextField();
        txtCel = new JTextField();
        txtEmail = new JTextField();
        txtDireccion = new JTextField();
        //botones
        btnNuevo = new JButton("Nuevo"); btnNuevo.addActionListener(this);
        btnGuardar = new JButton("Guardar");
        btnGuardar.setEnabled(false);
        btnModificar = new JButton("Modificar");
        btnModificar.setEnabled(false);
        btnEliminar = new JButton("Eliminar");
        btnEliminar.setEnabled(false);
        btnCancelar = new JButton("Cancelar");
        btnCancelar.setVisible(false);
        //ubicacion
        lblCodigo.setBounds(x, 40, w, h);
        lblNombre.setBounds(x, 70, w, h);
        lblApellido.setBounds(x, 100, w, h);
        lblCI.setBounds(x, 130, w, h);
        lblSexo.setBounds(x, 160, w, h);
        lblFechaNac.setBounds(x, 190, w+30, h);
        lblLugarNac.setBounds(x+330, 40, w+30, h);
        lblNacion.setBounds(x+330, 70, w, h);
        lblTel.setBounds(x+330, 100, w, h);
        lblCel.setBounds(x+330, 130, w, h);
        lblEmail.setBounds(x+330, 160, w, h);
        lblDireccion.setBounds(x+330, 190, w, h);
        txtCodigo.setBounds(x+130, 40, w, h);
        txtNombre.setBounds(x+130, 70, w+50, h);
        txtApellido.setBounds(x+130, 100, w+50, h);
        txtCI.setBounds(x+130, 130, w, h);
        txtSexo.setBounds(x+130, 160, w, h);
        txtFechaNac.setBounds(x+130, 190, w, h);
        txtLugarNac.setBounds(x+460, 40, w, h);
        txtNacion.setBounds(x+460, 70, w, h);
        txtTel.setBounds(x+460, 100, w, h);
        txtCel.setBounds(x+460, 130, w, h);
        txtEmail.setBounds(x+460, 160, w+100, h);
        txtDireccion.setBounds(x+460, 190, w+100, h);
        btnNuevo.setBounds(x+70, 250, w, h);
        btnGuardar.setBounds(x+210, 250, w, h);
        btnModificar.setBounds(x+350, 250, w, h);
        btnEliminar.setBounds(x+490, 250, w, h);
        btnCancelar.setBounds(x+490, 250, w, h);
        //mostrar elementos
        add(lblCodigo);
        add(lblNombre);
        add(lblApellido);
        add(lblCI);
        add(lblSexo);
        add(lblFechaNac);
        add(lblLugarNac);
        add(lblNacion);
        add(lblTel);
        add(lblCel);
        add(lblEmail);
        add(lblDireccion);
        add(txtCodigo);
        add(txtNombre);
        add(txtApellido);
        add(txtCI);
        add(txtSexo);
        add(txtFechaNac);
        add(txtLugarNac);
        add(txtNacion);
        add(txtTel);
        add(txtCel);
        add(txtEmail);
        add(txtDireccion);
        add(btnNuevo);
        add(btnGuardar);
        add(btnModificar);
        add(btnEliminar);
        setLayout(null);
        setVisible(true);
    }
//este evento quiero q se ejecute en mi abm, nada mas como ejemplo al apretar el   //boton nuevo
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == btnNuevo){
            JOptionPane.showMessageDialog(null, "hola");
        }    
    }
}
Espero que haya quedado más claro experto.. y tbn espero tu ayuda.. agradecido por dar interés a mi pregunta..
No considero que vaya a hacer una gran diferencia (existe cierta posibilidad), pero evita lo de menuCliente.components(), en vez de eso crea una instancia con todos los botones ya agregados y le das add (menuCliente); menuCliente. SetVisible(false); así al hacer clic en el botón no estarás agregando más botones si lo haces varias veces solo tendrás que hacerlo visible con menuCliente. SetVisible (true); En resumen crear primero las instancias que los botones solo deben de mostrar y ocultar.
Por favor manda el código modificado.
Finalmente necesitaría que me explicases específicamente donde vas a crear ese JPanel, si dentro del JPanel o del MenuPrincipal.
Mil gracias experto por la ayuda, era demasiado simple. Me ahogué en un vaso de agua.. el problema está solucionado..! Una vez más agradecido y ante cualquier oportunidad de aprender estaré en contacto con usted.
Matías Alvarenga

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas