Java - Crear metodo Modificar

 
Vista:
Imágen de perfil de Manuel
Val: 10
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Crear metodo Modificar

Publicado por Manuel (5 intervenciones) el 28/09/2019 00:57:01
Hola buenas noches a todos quisiera una ayuda de sus conociminetos. ¡Tengo un problema!

Eh creado un archivo.txt y un Jframe con varios jtexfield con los botones (registrar, modificar, eliminar) que muestra los datos en un Jtable. "el problema es cuando edito los Jtexfield y le doy modificar;
ME CREA UN DATO NUEVO en el mismo archivo, MAS NO ME EDITA EL DATO que quiero modificar."



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
public void Modificar() {
 
 
try {
 
            FileWriter perm_modif = new FileWriter(creaArchv, true);
            PrintWriter guard_modif = new PrintWriter(perm_modif);
 
            guard_modif.print(txt_Codigo.getText());
            guard_modif.print("," + txt_Nombre.getText());
            guard_modif.print("," + txt_Apellido.getText());
            guard_modif.print("," + cmb_TipoDocumento.getSelectedItem());
            guard_modif.print("," + txt_Documento.getText());
            guard_modif.print("," + txt_Edad.getText());
            guard_modif.print("," + cmb_Sexo.getSelectedItem());
            guard_modif.print("," + txt_Telefono.getText());
            guard_modif.print("," + txt_Direccion.getText());
            guard_modif.print("," + txt_Email.getText());
            guard_modif.println("," + cmb_Estado.getSelectedItem());
 
            perm_modif.close();
 
            JOptionPane.showMessageDialog(null, "Registro modificado correctamente.");
 
        } catch (HeadlessException | IOException e) {
            JOptionPane.showMessageDialog(null, "No has seleccionado un registro. ");
        }
}
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 Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Crear metodo Modificar

Publicado por Billy Joel (876 intervenciones) el 30/09/2019 02:13:49
Modifica esta linea
1
FileWriter perm_modif = new FileWriter(creaArchv, true);

Cambia el true por un false
1
FileWriter perm_modif = new FileWriter(creaArchv, false);

El true es para agregar mas contenido al archivo.

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
2
Comentar
Imágen de perfil de Manuel
Val: 10
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Crear metodo Modificar

Publicado por Manuel (5 intervenciones) el 30/09/2019 02:37:05
Gracias Billy Joel, SI puede realizar la modificación cómo quería. Pero me borró el contenido que tenía.
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

Crear metodo Modificar

Publicado por Billy Joel (876 intervenciones) el 30/09/2019 02:42:28
A ver si entiendo....
El contenido de datos que tienes en un archivo.txt lo muestras en un JTable, cuando presionas una de las filas del JTable se carga esos datos en un Formulario JFrame que tiene los botones de agregar, modificar y eliminar.

¿Es así?
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 Manuel
Val: 10
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Crear metodo Modificar

Publicado por Manuel (5 intervenciones) el 30/09/2019 02:51:09
Si así es, y cuándo le doy click a la fila y la edito y presionó modificar me genera un fila nueva, perdiendo los otros datos del archivo.txt
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

Crear metodo Modificar

Publicado por Billy Joel (876 intervenciones) el 30/09/2019 15:30:13
Disculpa la demora, ya me había dado sueño anoche...
Lo que tienes que hacer es modificar los datos de la fila seleccionada. Luego obtienes la data en arreglo bidimencional. Al final solo tienes que guardar esa data en el archivo.

Acá te dejo una posible solución a tu problema:
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
private void botonActualizarActionPerformed(java.awt.event.ActionEvent evt) {
    DefaultTableModel dtm = (DefaultTableModel) tabla.getModel();
    Object[] row = new Object[dtm.getColumnCount()];
    for (int i = 0; i < row.length; i++) {
        row[i] = dtm.getValueAt(tabla.getSelectedRow(), i);
        System.out.println(i + ": " + row[i]);
    }
 
    //////////////////////////
    dtm.setValueAt(txt_Codigo.getText(), tabla.getSelectedRow(), 0);
    dtm.setValueAt(txt_Nombre.getText(), tabla.getSelectedRow(), 1);
    dtm.setValueAt(txt_Apellido.getText(), tabla.getSelectedRow(), 2);
    dtm.setValueAt(cmb_TipoDocumento.getSelectedItem(), tabla.getSelectedRow(), 3);
    dtm.setValueAt(txt_Documento.getText(), tabla.getSelectedRow(), 4);
    dtm.setValueAt(txt_Edad.getText(), tabla.getSelectedRow(), 5);
    dtm.setValueAt(cmb_Sexo.getSelectedItem(), tabla.getSelectedRow(), 6);
    dtm.setValueAt(txt_Telefono.getText(), tabla.getSelectedRow(), 7);
    dtm.setValueAt(txt_Direccion.getText(), tabla.getSelectedRow(), 8);
    dtm.setValueAt(txt_Email.getText(), tabla.getSelectedRow(), 9);
    dtm.setValueAt(cmb_Estado.getSelectedItem(), tabla.getSelectedRow(), 10);
    //////////////////////////
 
    //Obtenemos la data que se encuentra en el JTable
    Object[][] data = new Object[dtm.getRowCount()][dtm.getColumnCount()];
    for (int i = 0; i < data.length; i++) {
        for (int j = 0; j < data[i].length; j++) {
            data[i][j] = dtm.getValueAt(i, j);
        }
    }
 
    actualizarArchivo(data);
}
 
public static void actualizarArchivo(Object[][] data) {
    FileWriter fichero = null;
    PrintWriter pw;
    try {
        fichero = new FileWriter(creaArchv);
        pw = new PrintWriter(fichero);
        for (int i = 0; i < data.length; i++) {
            for (int j = 0; j < data[i].length; j++) {
                pw.print(data[i][j] + (j + 1 < data[i].length ? "," : ""));
            }
            pw.println();
        }
    } catch (IOException e) {
        e.printStackTrace(System.out);
    } finally {
        try {
            if (fichero != null) {
                fichero.close();
            }
        } catch (IOException e2) {
            e2.printStackTrace(System.out);
        }
    }
}

Cualquier duda me avisas...

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
1
Comentar
Imágen de perfil de Manuel
Val: 10
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Crear metodo Modificar

Publicado por Manuel (5 intervenciones) el 30/09/2019 19:13:54
Hola Billy Joel buenas tardes, muchas gracias por ayudarme.

Efectivamente su codigo si me sirvio, ya puedo modificar cualquier registro sin borrar los demas datos
lo que observo es que al seleccionar la fila con el mouse el focus queda en el (Jtexfield Edad).

Yo tenia las opciones de visualizar todos los datos de la fila seleccionada de la tabla a todos los Jtexfield,
tan solo moviendo las flechas del teclado. Ahora estan bloqueadas, solo lo deja visualizar dando click por cada fila.

Muchas gracias por ayudarme y compartir sus conocimientos en las asesorias.
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 Manuel
Val: 10
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Crear metodo Modificar

Publicado por Manuel (5 intervenciones) el 30/09/2019 19:54:31
Hola Billy Joel buenas tardes, que pena ya solucione el problema del focus y de la visualizacion con las flechas del teclado.
fue por un autocompletar.
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