modificar base de dato directo en jtable

Hola comunidad
Espero me puedan ayudar..

Tengo una aplicación en JAVA en la cual puedo ingresar, borrar, modificar y buscar datos en una base de datos atraves de un formulario y usando botones que ejecutan la sentencia SQL correspondiente y mostrando en un jtable los datos correspondientes, hasta ahi todo bien.
sin embargo surge la siguiente necesidad, modificar los datos directamente en la jtable por un lado y por otro moverme por la jtable con un jslider.
Lo he intentado de todas formas y no hay caso...les adjunto el codigo por si de algo sirviera..

FORMULARIO.JAVA

package 1;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class formulario extends javax.swing.JFrame {

Clase_Conexion obj_conectar = new Clase_Conexion("localhost", "base1", "root", "12345");
int columnas = 6;
int filas = 0;
String matriz[][];
String[] titulo = new String[6];
int posicion_fila = -1;

String titulo_ventana = "Error";

ResultSet datos1 = obj_conectar.RecibeResulset1("select * from personas;");

public formulario() {
initComponents();
titulo[0] = "MATERNO";
titulo[1] = "NOMBRES";
titulo[2] = "EDAD";
titulo[3] = "PATERNO";
titulo[4] = "RUT";
titulo[5] = "DV";
llenarT();
}

public boolean estavacio(JTextField campo) {
boolean estado = false;

if (campo.getText().equals("")) {
estado = true;
JOptionPane.showMessageDialog(campo, "Ingrese un RUT", titulo_ventana, 1);

} else {

estado = false;
}
// campo.requestFocus();
return estado;
}

private void btn_eliminarActionPerformed(java.awt.event.ActionEvent evt) {

if (estavacio(txt_rut) == false) {
String rut = txt_rut.getText();
String sql_modifica = "delete from personas where rut=" + rut;
int reg_eliminar = obj_conectar.RecibeResulset2(sql_modifica);
if (reg_eliminar == 0) {
JOptionPane.showMessageDialog(this, " ERROR", "Ningún registro borrado", 2, null);
} else {
JOptionPane.showMessageDialog(this, +reg_eliminar + " Registro Eliminado", "Borrado exitoso", 2, null);
}
llenarT();
}
}

public void llenarT() {

ResultSet datos = obj_conectar.RecibeResulset1("select * from personas;");
datos1 = obj_conectar.RecibeResulset1("select * from personas;");
try {
datos.last();
filas = datos.getRow();
datos.beforeFirst();
matriz = new String[filas][columnas];
for (int y = 0; y < filas; y++) {
datos.next();
{
for (int x = 0; x < columnas; x++) {
matriz[y][x] = datos.getString(x + 1);
}
}
}
jTable1.setModel(new DefaultTableModel(matriz, titulo));

} catch (SQLException ex) {
Logger.getLogger(Clase_Conexion.class.getName()).log(Level.SEVERE, null, ex);
}
}

private void btn_buscarActionPerformed(java.awt.event.ActionEvent evt) {

if (estavacio(txt_rut) == false) {
if (txt_rut.getText().equals("")) {
JOptionPane.showMessageDialog(this, "INGRESE RUT A CONSULTAR", "Error", 2, null);
} else {
{
String rut = txt_rut.getText();
ResultSet datos = obj_conectar.RecibeResulset1("select * from personas where rut=" + rut + ";");
try {
datos.next();
String ape_materno = datos.getString(1);
String nombre = datos.getString(2);
String edad = datos.getString(3);
String ape_paterno = datos.getString(4);
String dv = datos.getString(6);
txt_Nombre.setText(nombre);
txt_A_materno.setText(ape_materno);
txt_A_paterno.setText(ape_paterno);
txt_edad.setText(edad);
txt_DV.setText(dv);

} catch (SQLException ex) {
Logger.getLogger(Clase_Conexion.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}

private void btn_insertarActionPerformed(java.awt.event.ActionEvent evt) {

if (estavacio(txt_rut) == false) {
String rut = txt_rut.getText();
String dv = txt_DV.getText();
String nombre = txt_Nombre.getText();
String ape_materno = txt_A_materno.getText();
String ape_paterno = txt_A_paterno.getText();
String edad = txt_edad.getText();
String sql_inserta = "insert into personas (apellido_pat, nombres, edad, apellido_mat, rut, dv) values "
+ "('" + ape_paterno + "','" + nombre + "'," + edad + ",'" + ape_materno + "'," + rut + ",'" + dv + "');";
int rinsert = obj_conectar.RecibeResulset2(sql_inserta);
if (rinsert == 0) {
JOptionPane.showMessageDialog(this, " ERROR", "RUT ya existe", 2, null);
} else {
JOptionPane.showMessageDialog(this, +rinsert + "Ingreso", "Ingresado exitosamente", 2, null);
}
llenarT();
}
}
private void btn_modificarActionPerformed(java.awt.event.ActionEvent evt) {

if (estavacio(txt_rut) == false) {
String rut = txt_rut.getText();
String dv = txt_DV.getText();
String nombre = txt_Nombre.getText();
String ape_paterno = txt_A_paterno.getText();
String ape_materno = txt_A_materno.getText();
String edad = txt_edad.getText();
String sql_modifica = "update personas set apellido_pat='" + ape_paterno + "',nombres='" + nombre + "',"
+ "edad=" + edad + ", apellido_mat='" + ape_materno + "',dv=" + dv + " where rut=" + rut;
int reg_modif = obj_conectar.RecibeResulset2(sql_modifica);
if (reg_modif == 0) {
JOptionPane.showMessageDialog(this, " ERROR", "RUT no existe", 2, null);
} else {
JOptionPane.showMessageDialog(this, +reg_modif + " Modificación", "Modificacion exitosa", 2, null);
}
llenarT();
}
}
private void btn_limpiarActionPerformed(java.awt.event.ActionEvent evt) {
txt_rut.setText(null);
txt_DV.setText(null);
txt_Nombre.setText(null);
txt_A_materno.setText(null);
txt_A_paterno.setText(null);
txt_edad.setText(null);
}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {

int fila = jTable1.getSelectedRow();
String rut = jTable1.getValueAt(fila, 4).toString();
String dv = jTable1.getValueAt(fila, 5).toString();
String nombre = jTable1.getValueAt(fila, 1).toString();
String ap_materno = jTable1.getValueAt(fila, 3).toString();
String ap_paterno = jTable1.getValueAt(fila, 0).toString();
String edad = jTable1.getValueAt(fila, 2).toString();
txt_rut.setText(rut);
txt_DV.setText(dv);
txt_Nombre.setText(nombre);
txt_A_materno.setText(ap_materno);
txt_A_paterno.setText(ap_paterno);
txt_edad.setText(edad);
}

private void btn_listarActionPerformed(java.awt.event.ActionEvent evt) {

llenarT();
}

private void txt_rutKeyTyped(java.awt.event.KeyEvent evt) {

char car = evt.getKeyChar();
if ((car < '0' || car > '9')) {
evt.consume();
}
}

private void btn_primeroActionPerformed(java.awt.event.ActionEvent evt) {
{
try {
datos1.first();
String rut = datos1.getString(5);
String DV = datos1.getString(6);
String nombre = datos1.getString(2);
String apellidoP = datos1.getString(4);
String apellidoM = datos1.getString(1);
String edad = datos1.getString(3);
txt_DV.setText(DV);
txt_rut.setText(rut);
txt_Nombre.setText(nombre);
txt_A_paterno.setText(apellidoP);
txt_A_materno.setText(apellidoM);
txt_edad.setText(edad);

jTable1.getSelectionModel().setSelectionInterval(0, 0);
} catch (SQLException ex) {
Logger.getLogger(formulario.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

private void btn_ultimoActionPerformed(java.awt.event.ActionEvent evt) {

{
try {

datos1.last();
int x = datos1.getRow();
x = x - 1;
String rut = datos1.getString(5);
String DV = datos1.getString(6);
String nombre = datos1.getString(2);
String apellidoP = datos1.getString(4);
String apellidoM = datos1.getString(1);
String edad = datos1.getString(3);
txt_DV.setText(DV);
txt_rut.setText(rut);
txt_Nombre.setText(nombre);
txt_A_paterno.setText(apellidoP);
txt_A_materno.setText(apellidoM);
txt_edad.setText(edad);

jTable1.getSelectionModel().setSelectionInterval(x, x);

} catch (SQLException ex) {
Logger.getLogger(formulario.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

private void btn_anteriorActionPerformed(java.awt.event.ActionEvent evt) {

try {
if (datos1.previous() == true) {
int x = datos1.getRow();
x = x - 1;
String rut = datos1.getString(5);
String DV = datos1.getString(6);
String nombre = datos1.getString(2);
String apellidoP = datos1.getString(4);
String apellidoM = datos1.getString(1);
String edad = datos1.getString(3);
txt_DV.setText(DV);
txt_rut.setText(rut);
txt_Nombre.setText(nombre);
txt_A_paterno.setText(apellidoP);
txt_A_materno.setText(apellidoM);
txt_edad.setText(edad);

jTable1.getSelectionModel().setSelectionInterval(x, x);
} else {
JOptionPane.showMessageDialog(this, "no existen mas registros");
}
} catch (SQLException ex) {
Logger.getLogger(formulario.class.getName()).log(Level.SEVERE, null, ex);
}
}

private void btn_siguienteActionPerformed(java.awt.event.ActionEvent evt) {

{
try {
if (datos1.next() == true) {
int x = datos1.getRow();
x = x - 1;
String rut = datos1.getString(5);
String DV = datos1.getString(6);
String nombre = datos1.getString(2);
String apellidoP = datos1.getString(4);
String apellidoM = datos1.getString(1);
String edad = datos1.getString(3);
txt_DV.setText(DV);
txt_rut.setText(rut);
txt_Nombre.setText(nombre);
txt_A_paterno.setText(apellidoP);
txt_A_materno.setText(apellidoM);
txt_edad.setText(edad);

jTable1.getSelectionModel().setSelectionInterval(x, x);
} else {
JOptionPane.showMessageDialog(this, "no existen mas registros");
}
} catch (SQLException ex) {
Logger.getLogger(formulario.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

public static void main(String args[]) {

//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(formulario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(formulario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(formulario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(formulario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new formulario().setVisible(true);
}
});
}

gracias..