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
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
Respuesta de rigo123
1
1
rigo123, Programador adolescente, pero con bastante experiencia
Siento que me falta un poco de información.
Sería buena idea lo del código.
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..
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.
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.
- Compartir respuesta
- Anónimo
ahora mismo