Java - AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

Publicado por Eliana (3 intervenciones) el 15/10/2019 23:00:23
Hola gente linda, tengo que hacer un formulario, que dentro del mismo tenga 6 botones
un boton que agregue los datos en una tabla,
otro que elimine de a uno los datos,
otro que abra todos los registros de la tabla,
otro que liste de a uno los datos,
otro que guarde los datos
y otro que salga del programa pero guarde la informacion que estuve trabajando

cuando elimino no guarda los datos eliminados y me los vuelve a mostrar

la verdad que me esta costando un monton, pero no lo quiero abandonar, si alguien se apiada de mi y me dice en que me estoy equivocando agradeceria un monton

tengo 2 clases,
********************************************************************
uno que se llama TSocio

1
2
3
4
5
6
7
8
public class TSocio {
 
    private String ApellidoyNombre;
    private String DNI;
    private String Telefono;
    private String Categoria;
 
//Aca genero un constructor vacio, un constructor con los string y un constructor get and set

*********************************************************************************************
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//la otra clase que le doy los metodos a los botones
 
package TSocioMetodos;
 
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import TSocio.TSocio;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
 
public class TSocioMetodos extends AbstractTableModel{
 
    String [] columnas= {"APELLIDO Y NOMBRE", "DNI", "TELEFONO", "CATEGORIA"};
    private List<TSocio> socio= new ArrayList();
 
    public TSocioMetodos(List<TSocio> unsocio) {
        this.socio = unsocio;
    }
 
    @Override
    public int getRowCount() {
        return socio.size();
    }
 
    @Override
    public int getColumnCount() {
   return columnas.length;
    }
 
    @Override
    public Object getValueAt(int fila, int columnas) {
 
        Object respuesta;
    if (columnas == 0 ){
    respuesta= socio.get(fila).getApellidoyNombre();
        }else{
    if (columnas == 1 ){
    respuesta= socio.get(fila).getDNI();
        }else{
    if (columnas == 2 ){
    respuesta= socio.get(fila).getTelefono();
        }else{
 
    respuesta= socio.get(fila).getCategoria();
    }
    }
    }
   return respuesta;
}
 
     public String getColumnName(int column) {
         return columnas[column];
     }
 
    public void AgregarDatos(TSocio socioss){
        socio.add(socioss);
   //Metodo para Guardar los datos de la tabla en un archivo de texto
        try {
            FileWriter fw = new FileWriter("Fichero.txt", true);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter pw = new PrintWriter(bw);
            pw.print(socioss.getApellidoyNombre());
            pw.print(" | " + socioss.getDNI());
            pw.print(" | " + socioss.getTelefono());
            pw.println(" | " + socioss.getCategoria());
            pw.close();
 
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }
 
    public void EliminarDatos(TSocio soc){
        socio.remove(soc);
        try {
            FileWriter fw = new FileWriter("Fichero.txt", true);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter pw = new PrintWriter(bw);
            pw.print(soc.getApellidoyNombre());
            pw.print(" " + soc.getDNI());
            pw.print(" " + soc.getTelefono());
            pw.println(" " + soc.getCategoria());
            pw.close();
 
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
 
    }
 
       //Metodo para mostrar los datos guardados de un txt en un JTable
    public DefaultTableModel ListadeSocios() {
        Vector titulo = new Vector();
        titulo.addElement("APELLIDO Y NOMBRE");
        titulo.addElement("DNI");
        titulo.addElement("TELEFONO");
        titulo.addElement("CATEGORIA");
 
        //Creo un vector que contenga Apellido, Dni, Telefono, Categoria
        // y un modelo tabla para agregar el vector en la posicion 0
 
        DefaultTableModel modelodelaTabla = new DefaultTableModel(titulo, 0);
        //Creo metodo para leer la tabla
        try {
            FileReader fr= new FileReader("Fichero.txt");
            BufferedReader br= new BufferedReader(fr);
            String d;
            while ((d= br.readLine())!= null){
            StringTokenizer dato= new StringTokenizer(d, " | ");
            Vector x= new Vector();
            while(dato.hasMoreTokens()){
                x.addElement(dato.nextToken());
                         }
            modelodelaTabla.addRow(x);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
        return modelodelaTabla;
    }
}

********************************************************************************************************
y el frame
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//Me falta el boton guardar
 
import TSocio.TSocio;
import TSocioMetodos.TSocioMetodos;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
 
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
 
public class TSocioFormulario extends javax.swing.JFrame {
    TSocio socio= new TSocio();
    TSocioMetodos metodos= new TSocioMetodos(new ArrayList<>());;
    DefaultTableModel modelot= new DefaultTableModel();
 
 
    public TSocioFormulario() {
        initComponents();
        this.tablasocios.setModel(new TSocioMetodos(new ArrayList<>()));
 
    }
 
 
    private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {
       String ApellidoyNombre = txtNombre.getText();
        String DNI = txtDNI.getText();
        String Telefono = txtTelefono.getText();
        String Categoria = categoria.getSelectedItem().toString();
 
        socio.setApellidoyNombre(ApellidoyNombre);
        socio.setDNI(DNI);
        socio.setTelefono(Telefono);
        socio.setCategoria(Categoria);
 
        metodos.AgregarDatos(socio);
 
 
         //Limpio los casilleros luego de llenarlos
        txtNombre.setText("");
        txtDNI.setText("");
        txtTelefono.setText("");
 
    }
 
    private void btnAbrirActionPerformed(java.awt.event.ActionEvent evt) {
 
     tablasocios.setModel(metodos.ListadeSocios());
 
 
    }
 
    private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {
        //Creo el boton salir, pero antes pide confirmacion para salir del programa
         if (JOptionPane.showConfirmDialog(rootPane, "¿Desea salir del sistema?",
                "Salir del sistema", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
            System.exit(0);
        }
 
    }
 
    private void btnListarActionPerformed(java.awt.event.ActionEvent evt) {
           //Selecciono la fila de la lista y lo muestro en un cuadro de dialogo JOptionPane
        if (tablasocios.getSelectedRow() >= 0) {
            JOptionPane.showMessageDialog(this, "DATOS DEL SOCIO: " + "\n" + "\n"
                    + "APELLIDO Y NOMBRE: " + (tablasocios.getValueAt(tablasocios.getSelectedRow(), 0))
                    + " , " + "\n"
                    + "DNI: " + (tablasocios.getValueAt(tablasocios.getSelectedRow(), 1)) + " , " + "\n"
                    + "TELEFONO: " + (tablasocios.getValueAt(tablasocios.getSelectedRow(), 2)) + " , " + "\n"
                    + "CATEGORIA: " + (tablasocios.getValueAt(tablasocios.getSelectedRow(), 3)),
                    " INFORMACIÓN DEL SOCIO SELECCIONADO", JOptionPane.INFORMATION_MESSAGE);
        } else {
            JOptionPane.showMessageDialog(this, "Para continuar debe seleccionar el socio que desea ver.",
                    "SE PRODUJO UN ERROR AL MOSTRAR EL REGISTRO", JOptionPane.ERROR_MESSAGE);
        }
    }
 
    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
 
     DefaultTableModel modelo = (DefaultTableModel) tablasocios.getModel();
if(tablasocios.getSelectedRow()>=0){
modelo.removeRow(tablasocios.getSelectedRow());
metodos.EliminarDatos(socio);
JOptionPane.showMessageDialog(null, "LOS DATOS SE ELIMINARON CORRECTAMENTE");
}else{
        JOptionPane.showMessageDialog(this, "Para continuar debe seleccionar el socio que eliminar.",
                    "SE PRODUJO UN ERROR AL ELIMINAR EL REGISTRO", JOptionPane.ERROR_MESSAGE);
        }
        System.out.print("Fichero.txt");
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

Publicado por pablo (239 intervenciones) el 16/10/2019 15:34:25
Hola qué tal Eliana, pues mira no sé mucho de swing y de interfaces pero bueno supongo que algún día me pondré al loro con eso; bueno respecto a tu problema buscando por aquí y buscando por allá veo que no tienes getValue, que tienes creado el modelo de la tabla y eso está bien pero te falta recibir el valor que deseas eliminar y el que enviaras por parámetro a tu método EliminarDatos, en este artículo te comentan como obtener dicho valor
https://medium.com/el-acordeon-del-programador/leyendo-datos-de-una-jtabla-en-java-swing-bc04263efd76

No es mucho pero quizás con eso puedas obtener el valor que estas buscando y poder pasarlo como parámetro, antes de pasarlo por parámetro, que te recomiendo yo que te cerciores de que de verdad el valor llega, cómo puedes ver ese valor con un System.out.println().

De eso es lo que me he fijado mirando tú código por encima, cualquier cosa comentas, para ver qué tal, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

Publicado por Eliana (3 intervenciones) el 16/10/2019 15:58:09
Bien, muchas gracias!! ahora lo leo y reviso bien,, gracias!!

lo que me olvide de mencionar y que es muy importante, es que los datos deben estar guardados en un fichero txt, debe leerlos desde alli, y borrarlos alli tambien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

Publicado por pablo (239 intervenciones) el 16/10/2019 16:02:55
Sí claro desde tu método EliminarDatos veo que lo haces eso te lo borrara según el parámetro que en este caso me imagino que te devolverá la fila en la que se encuentra el dato que deseas borrar y te lo quitara del txt o archivo que estés recorriendo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

Publicado por Billy Joel (875 intervenciones) el 16/10/2019 18:03:35
La solución a tu problema es reescribir el archivo con lo que tienes en la lista socio.

Aunque ahora lo veo bien... no veo en que parte cargas esa lista.
Podrías poner un estracto del contenido del archivo Fichero.txt para darte una respuesta completa.

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rene
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

Publicado por Rene (6 intervenciones) el 16/10/2019 22:05:00
Bueno de acuerdo a tu pregunta:

cuando elimino no guarda los datos eliminados y me los vuelve a mostrar ????

Debes poner un campo "STATUS o ESTADO" booleano. Si esta True esta activo, si esta False esta borrado.

Asi cuando abras tus datos pones las condicion para los que STATUS == True y solo te mostrará los que esten activos.

Pero...; Si deseas mantener los que estan en STATUS False (los borrados) y poder recuperarlos deberas hacer un poco mas de programacion, digamos otro boton que te permita mostrar los que estan borrados y recuperar alguno que quieras.

Suerte René
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

AYUDA!! listar, abrir, eliminar, agregar.. NO ME ESTARIA LLEVANDO CON JAVA

Publicado por Eliana (3 intervenciones) el 17/10/2019 18:34:26
Hola rene, no me funciono el consejo, tiene el mismo problema, será porque cada vez que abro la tabla reimprime el formulario que lee y me lo devuelve? porque cuando presiono el boton borrar lo hace correctamente, luego agrego otro dato mas , presiono el boton abrir, y esta de nuevo el dato en el mismo lugar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar