Foro de elhacker.net

Programación => Java => Mensaje iniciado por: nemesis27 en 8 Diciembre 2017, 21:17 pm



Título: No se me guardan los datos en el ArrayList
Publicado por: nemesis27 en 8 Diciembre 2017, 21:17 pm
Hola gente del foro, a ver si alguien me puede ayudar con este problema.  Estoy haciendo un programa con un jframe que me guarde y me busque datos ingresados.

Me quede trabado en la parte donde por medio de un ArrayList guardo los datos que ingreso. Ya que al ejecutar el jframe, al momento de guardar los datos me sale el siguiente error en la consola:

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)


Les muestro los códigos que tengo hechos:

Código:
 public class People {

int Documento;
String Nombre;
String Apellido;


public People() {}

public People(int d, String n, String a) {
this.Documento=d;
this.Nombre=n;
this.Apellido=a;
}

public int getDocumento() {
return Documento;
}

public void setDocumento(int documento) {
Documento = documento;
}

public String getNombre() {
return Nombre;
}

public void setNombre(String nombre) {
Nombre = nombre;
}

public String getApellido() {
return Apellido;
}

public void setApellido(String apellido) {
Apellido = apellido;
}

public String toString() {
return ("El DNI es: " +Documento+ "\n El nombre es: " +Nombre+ "\n El apellido es: " +Apellido);
}

}
 


Código:
 import java.awt.BorderLayout;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.awt.event.ActionEvent;

public class Ventana extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField txt_nombre;
private JTextField txt_apellido;

ArrayList<People> array=new ArrayList<People>();


public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Ventana frame = new Ventana();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Ventana() {



setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JLabel txt_dni = new JLabel("Ingrese dni");
txt_dni.setBounds(30, 11, 145, 14);
contentPane.add(txt_dni);

textField = new JTextField();
textField.setBounds(150, 8, 86, 20);
contentPane.add(textField);
textField.setColumns(10);

JButton btnBuscar = new JButton("Buscar");
btnBuscar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
for(int i=0; i<array.size(); i++) {
txt_dni.setText(""+array.get(i).getDocumento());
txt_nombre.setText(""+array.get(i).getNombre());
txt_apellido.setText(""+array.get(i).getApellido());
}
}
});
btnBuscar.setBounds(287, 7, 89, 23);
contentPane.add(btnBuscar);

JLabel lblNombre = new JLabel("Nombre");
lblNombre.setBounds(10, 86, 46, 14);
contentPane.add(lblNombre);

txt_nombre = new JTextField();
txt_nombre.setBounds(139, 83, 86, 20);
contentPane.add(txt_nombre);
txt_nombre.setColumns(10);

JLabel lblApellido = new JLabel("Apellido");
lblApellido.setBounds(10, 134, 46, 14);
contentPane.add(lblApellido);

txt_apellido = new JTextField();
txt_apellido.setBounds(139, 131, 86, 20);
contentPane.add(txt_apellido);
txt_apellido.setColumns(10);

JButton btnGuardar = new JButton("Guardar");
btnGuardar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int Documento;
int contador=0;
String Nombre,Apellido;

Documento=Integer.parseInt(txt_dni.getText());
Nombre=txt_nombre.getText();
Apellido=txt_apellido.getText();

People p=new People();
p.setDocumento(Documento);
p.setNombre(Nombre);
p.setApellido(Apellido);

array.add(p);
contador++;

JOptionPane.showMessageDialog(null, "Los datos se han guardado correctamente");
txt_dni.setText("");
txt_nombre.setText("");
txt_apellido.setText("");
}
});
btnGuardar.setBounds(21, 207, 89, 23);
contentPane.add(btnGuardar);

JButton btnCancelar = new JButton("Cancelar");
btnCancelar.setBounds(120, 207, 89, 23);
contentPane.add(btnCancelar);

JButton btnSalir = new JButton("Salir");
btnSalir.setBounds(219, 207, 89, 23);
contentPane.add(btnSalir);
}
}
 


Título: Re: No se me guardan los datos en el ArrayList
Publicado por: rub'n en 8 Diciembre 2017, 23:59 pm
Hola por convención en java usa nomenclatura Camel Case, es decir variables locales, variables de instancia primera letra en minúscula luego mayúscula ej "myDocumento"

Usa tambien Código GeSHi y escoge java

cambia a String tu variable int documento,

private String documento;

y en el listener del boton guardar, también cambia a String, podemos ajustarlo para que  notifique si un usuario existe o no, pero debo ver interes  >:D



Edito ahoria vi bien... el detalle es,  :xD

Código
  1. JLabel txt_dni = new JLabel("Ingrese dni");
  2. txt_dni.setBounds(30, 11, 145, 14);
  3. contentPane.add(txt_dni);

usa la variable de instancia creada por ti JTextField textField para obtener el texto de entrada no el  txt_dni que es de tipo JLabel

Código
  1. int documento = Integer.parseInt(textField.getText());


Título: Re: No se me guardan los datos en el ArrayList
Publicado por: nemesis27 en 9 Diciembre 2017, 05:31 am
Hola por convención en java usa nomenclatura Camel Case, es decir variables locales, variables de instancia primera letra en minúscula luego mayúscula  "myDocumento"

Usa tambien Código GeSHi y escoje java

cambia a String tu variable int documento,

private String documento;

y en el listener del boton guardar, también cambia a String, podemos ajustarlo para que  notifique si un usuario existe o no, pero debo ver interes  >:D



Edito ahoria vi bien... el detalle es,  :xD

JLabel txt_dni = new JLabel("Ingrese dni");
  txt_dni.setBounds(30, 11, 145, 14);
  contentPane.add(txt_dni);

usa private JTextField textField 
int documento = Integer.parseInt(textField.getText());

Ahí lo pude solucionar, muchas gracias amigo