elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 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 ... 139
821  Programación / Java / Re: [Ayuda]Problema al querer leer JSON hecho PHP desde Java en: 19 Octubre 2018, 02:46 am
Hola,

es de caracter privado lo que tiene tu json ? http://localhost:8080/Sitio%201/code.php

puedo verlo? por lo visto es el JSON que estas generando
822  Seguridad Informática / Hacking Wireless / Re: Importancia de vulnerabilidades en redes LAN en: 19 Octubre 2018, 01:40 am
Hola amigo como estás, absurdo es el que se queda con la duda sin preguntar, nadie nace sabiendo todas las cosas, hace mucho tiempo también me tocó hacer una infinidad de preguntas que por muy básicas que fueran me han servido mucho.

Hay dos maneras de hacer esto, utilizando procedimientos con un buen checklist o hacer todo según el criterio propio utilizando una buena base de conocimientos.

Ambas maneras son efectivas pero te llevan a caminos distintos. Una de las cosas importantes que consideraría en una revisión de seguridad dentro de una red wifi (entendiendo que ya estás conectado) es visualizar mentalmente cómo está conectado todo, por ejemplo... debe haber un punto de acceso que sirve el wifi, este a su ves puede estar repitiendo y llegar a un appliance (una caja de 1u que da wifi), por ejemplo un wifi controller el cual puede tener un portal cautivo, de ahi para tener acceso a la red o internet debe estar conectado a un firewall y este a su ves a switches y computadores o servidores.

Normalmente una red puede estar separada de manera física o lógica, esto quiere decir que un controlador wifi puede estar conectado al mismo equipo que le da acceso a la red de los computadores y servidores (o sea, todos conectados al mismo lugar por cables), pero internamente crea redes virtuales y a cada uno le asigna permisos de acceso, por ejemplo para que un pc no se pueda conectar a un servidor o alguien desde el wifi no se conecte a los pc de la red (zonas DMZ, etc).

En este caso lo más lógico es buscar credenciales por defecto y vulnerabilidades a los puntos críticos de la red y estos son los puntos de acceso o controladores de wifi, accediendo a ellos será mas facil acceder a todos los demás equipos y revisar si alguno tiene carpetas compartidas, existe un controlador ldap, etc.

Las herramientas como nmap y msf son solo herramientas, la mayor parte del buen trabajo lo hará tu cerebro, asi que mientra más información tengas de lo que quieras revisar, más efectivo va a ser tu resultado.

Te recomiendo que le des un vistazo a temas sobre como funcionan las redes y servicios, infraestructura, etc, así como le has dedicado tiempo para aprender a usar nmap, de esta manera podrás tener mejores resultados y saber por ejemplo si tu escaneo está siendo bloqueado o necesitas evadir algunas reglas de red.

saludos.

Que bueno es leer a un verdadero genio  ;D

Añadiendo también que las versiones de dichos puntos de acceso es importante, si accede por ejemplo al AirOS de un ubiquiti con contraseñas por defecto, pues podria tener mas informacion, varias veces me paso jeejj saludos muchachones

por ejemplo el exploit ubitiqui_airos_file_upload


recuerda usar ética y no dañar ni desconfigurar nada
823  Foros Generales / Foro Libre / un gran theft auto en España ? en: 18 Octubre 2018, 17:29 pm
Que saben de esto?  :huh: o sera wasofi@ , ciberChorrad@s etc ?

824  Programación / Java / Re: Una ayudita en: 18 Octubre 2018, 16:54 pm

Hola,
La descripción de tu post no es adecuada "Una ayudita"  :-\ , y usa Código GeSHI




Este es tu código algo modificado para que funcione pero se hacia largo y aun faltaba comparar  :-(

Código
  1. import java.util.Scanner;
  2.  
  3. public class ProfeAdmin {
  4.  
  5.    public static void main(String[] args) {
  6.  
  7.        Scanner leer = new Scanner(System.in);
  8.        String nom = new String("Docente2018");
  9.        String contra = new String("Docente2018");
  10.        String nom2 = new String("Administrador2018");
  11.        String contra2 = new String("Administrador2018");
  12.        System.out.println("1)Profesor");
  13.        System.out.println("2)Administrador");
  14.        int Opcion = leer.nextInt();
  15.  
  16.  
  17.        int count = 1; // uso de contador para contrar la oportunidades que son 3
  18.  
  19.        switch (Opcion) {
  20.  
  21.            case 1:
  22.  
  23.                System.out.println("Ingrese su nombre de usuario: ");
  24.                String nombre = leer.next();
  25.  
  26.                System.out.println("Ingrese su contraseña: ");
  27.                String contraseña = leer.next();
  28.  
  29.  
  30.                // establecer 3 oportunidades si se equivoca en el nombre o la contraseña
  31.  
  32.                if (nom.equals(nombre) && contra.equals(contraseña)) {
  33.                    mostrar("Correcto access granted");
  34.  
  35.                } else {
  36.                    if (!nom.equals(nombre)) { // se lee, "si nom no es igual a nombre" , dara true
  37.                        System.out.println("Nombre incorrecto");
  38.                        int countO = 3;
  39.                        while (count <= 3) {
  40.                            ShowData.showLn("Oportunidad " + (countO--));
  41.                            ShowData.showLn("Ingrese Nombre");
  42.                            final String newName = leer.next();
  43.  
  44.                            if (newName.equals(nom)) {
  45.                                ShowData.showLn("Nombre Correcto");
  46.                                break;
  47.                            } else {
  48.                                count++;
  49.                                continue;
  50.                            }
  51.  
  52.                        }
  53.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  54.                                   // xq no entrara mas en el while
  55.  
  56.                    } else if (!contra.equals(contraseña)) { //si la contra no es igual a contraseña, dara true
  57.  
  58.                        System.out.println("Contraseña incorrecta");
  59.                        int countO = 3;
  60.                        while (count <= 3) {
  61.                            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
  62.                            mostrar("Ingrese contraseña");
  63.                            final String newPass = leer.next();
  64.  
  65.                            if (newPass.equals(contra)) {
  66.                                mostrar("Contraseña correcta");
  67.  
  68.                                /*
  69.                                 Aqui introducir siguente menu
  70.                                  */
  71.  
  72.                                break;
  73.                            } else {
  74.                                count++;
  75.                                continue;
  76.                            }
  77.  
  78.                        }
  79.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  80.                                    // xq no entrara mas en el while
  81.  
  82.                    }
  83.  
  84.                }
  85.  
  86.                break;
  87.  
  88.            case 2:
  89.                System.out.println("Ingrese su nombre de usuario: ");
  90.                String nombre2 = leer.next();
  91.                System.out.println("Ingrese su contraseña: ");
  92.                String contraseña2 = leer.next();
  93.  
  94.  
  95.                if (nom2.equals(nombre2) && contra2.equals(contraseña2)) {
  96.                    mostrar("Correcto access granted");
  97.                } else {
  98.                    if (!nom2.equals(nombre2)) { // se lee, "si nom no es igual a nombre" , dara true
  99.                        System.out.println("Nombre incorrecto");
  100.                        int countO = 3;
  101.                        while (count <= 3) {
  102.                            mostrar("Oportunidad " + (countO--));
  103.                            mostrar("Ingrese Nombre");
  104.                            final String newName = leer.next();
  105.  
  106.                            if (newName.equals(nom2)) {
  107.                                mostrar("Nombre Correcto");
  108.                                break;
  109.                            } else {
  110.                                count++;
  111.                                continue;
  112.                            }
  113.  
  114.                        }
  115.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  116.                        // xq no entrara mas en el while
  117.  
  118.                    } else if (!contra2.equals(contraseña2)) { //se lee, la contra no es igual a contraseña, dara true
  119.  
  120.                        System.out.println("Contraseña incorrecta");
  121.                        int countO = 3;
  122.                        while (count <= 3) {
  123.                            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
  124.                            mostrar("Ingrese contraseña");
  125.                            final String newPass = leer.next();
  126.  
  127.                            if (newPass.equals(contra2)) {
  128.                                mostrar("Contraseña correcta");
  129.  
  130.                                /*
  131.                                 Aqui introducir siguente menu
  132.                                  */
  133.  
  134.                                break;
  135.                            } else {
  136.                                count++;
  137.                                continue;
  138.                            }
  139.  
  140.                        }
  141.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  142.                        // xq no entrara mas en el while
  143.  
  144.                    }
  145.  
  146.                }
  147.  
  148.                break;
  149.        }
  150.    }
  151.  
  152.    private static void mostrar(final String s) {
  153.        System.out.println(s);
  154.    }
  155.  
  156.    //establecer oportunidades, son 3, creamos un metodo
  157.    private void filtrar() {
  158.  
  159.    }
  160. }
  161.  
  162.  


tu código original carece de métodos, uso de contructor, de variables de instancia, variables de clase, es bueno que le des un vistazo y refactorises tu código con eso., y ahora con este codigo se nota algo de diferencia con respecto a la reducción de líneas, solo que usamos tipos enum aquí

para las sentencias switch puedes usar enum  >:D ver linea 50 el método
Código
  1. getUsersByID()




Código
  1. package foro;
  2.  
  3. import javax.swing.*;
  4. import java.util.EnumSet;
  5. import java.util.NoSuchElementException;
  6. import java.util.Scanner;
  7.  
  8. enum Users {
  9.  
  10.    DOCENTE(1),
  11.    ADMINISTRADOR(2);
  12.  
  13.    private Integer id;
  14.  
  15.    Users(final Integer id) {
  16.        this.id = id;
  17.    }
  18.    public Integer getId() {
  19.        return id;
  20.    }
  21.  
  22.    //buscando los usarios
  23.    public static Users getUsersByID(final Integer id) {
  24.        return EnumSet.allOf(Users.class)
  25.                .stream()
  26.                .filter(object -> id.equals(object.id))
  27.                .findFirst() //detienela busqueda de las lista con la primera conincidencia
  28.                .get(); // retorna un NoSuchElementException en caso que no exista dicho id
  29.    }
  30.  
  31. }
  32.  
  33.  
  34. public class ProfeAdmin2 {
  35.  
  36.    private static final Scanner LEER = new Scanner(System.in);
  37.    private static final String ACCESS_GRANTED = "Access Granted.";
  38.    private static final String DATOS_INCORRECTOS = "Datos incorrectos.";
  39.  
  40.    private String nom = new String("Docente2018");
  41.    private String contra = new String("Docente2018");
  42.    private String nom2 = new String("Administrador2018");
  43.    private String contra2 = new String("Administrador2018");
  44.  
  45.    public ProfeAdmin2() {
  46.        System.out.println("1)Profesor");
  47.        System.out.println("2)Administrador");
  48.        final int opcion = LEER.nextInt();
  49.        try {
  50.            final Users users = Users.getUsersByID(opcion);
  51.            switch (users) {
  52.                case DOCENTE:
  53.                    process(nom,contra); // pasando parametros correspondientes al metodo process para reutilizarlo
  54.                    break;
  55.                case ADMINISTRADOR:
  56.                    process(nom2,contra2); // pasando parametros correspondientes al metodo process para reutilizarlo
  57.                    break;
  58.            }
  59.        }catch (final NoSuchElementException ex) {
  60.            JOptionPane.showMessageDialog(null,"No se encuentra el usuario " + opcion);
  61.            mostrar("Saliendo de la aplicacion");
  62.            System.exit(0);
  63.        }
  64.  
  65.    }
  66.  
  67.    private void process(final String paramNom, final String paramPass) {
  68.        System.out.println("Ingrese su nombre de usuario: ");
  69.        final String nombre = LEER.next();
  70.  
  71.        System.out.println("Ingrese su contraseña: ");
  72.        final String contraseña = LEER.next();
  73.  
  74.        // establecer 3 oportunidades si se equivoca en el nombre o la contraseña
  75.        int count = 0;
  76.        if (nombre.equals(paramNom) && contraseña.equals(paramPass)) {
  77.            mostrar(ACCESS_GRANTED);
  78.            /*
  79.             Pasar a otro menu aqui
  80.              */
  81.        } else {
  82.  
  83.            if(!nombre.equals(paramNom) && !contraseña.equals(paramPass)) {
  84.                mostrar(DATOS_INCORRECTOS);
  85.                ingresarNombre("", paramNom);
  86.                ingresarPass("", paramPass);
  87.                mostrar(ACCESS_GRANTED);
  88.            }
  89.  
  90.            else if (!nombre.equals(paramNom)) { // se lee, "si nom no es igual a paramNom" , dara true
  91.                ingresarNombre("Nombre incorrecto",paramNom);
  92.            } else if (!contraseña.equals(paramPass)) { //si la contra no es igual a paramPass, dara true
  93.                ingresarPass("Contraseña incorrecta",paramPass);
  94.            }
  95.        }
  96.    }
  97.  
  98.    private void ingresarNombre(final String msg,final String paramNom) {
  99.        System.out.println(msg);
  100.        int countO = 3;
  101.        int count = 0;
  102.        while (count <= 3) {
  103.            mostrar("Oportunidad " + (countO--));
  104.            mostrar("Ingrese Nombre");
  105.            final String newName = LEER.next();
  106.            if (newName.equals(paramNom)) {
  107.                mostrar("Nombre Correcto");
  108.  
  109.                break;
  110.            } else {
  111.                count++;
  112.                continue;
  113.            }
  114.        }
  115.        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  116.        // xq no entrara mas en el while
  117.    }
  118.    private void ingresarPass(final String msg, final String paramPass) {
  119.        System.out.println(msg);
  120.        int countO = 3;
  121.        int count = 0;
  122.        while (count <= 3) {
  123.            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
  124.            mostrar("Ingrese contraseña");
  125.            final String newPass = LEER.next();
  126.            if (newPass.equals(paramPass)) {
  127.                mostrar("Contraseña correcta");
  128.  
  129.                break;
  130.            } else {
  131.                count++;
  132.                continue;
  133.            }
  134.        }
  135.        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  136.        // xq no entrara mas en el while
  137.    }
  138.  
  139.    private <T> void mostrar(final T s) {
  140.        System.out.println(s);
  141.    }
  142.    public static void main(String ..._0x52) {
  143.        new ProfeAdmin2();
  144.    }
  145.  
  146. }
  147.  

825  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Si no puedo enviar MPs a un usuario diciendome que este usuario no se encuentra en: 16 Octubre 2018, 12:33 pm
Hola, en ese caso, significa que tiene la bandeja de entrada llena??

Más en concreto, es por @OmarHack, que hace ya un siglo que no hablo con el... :P

Un saludo.

jajaaj aun recuerdo a Omar, por skype.
826  Programación / Java / Re: Envío de correo programado en otra fecha en Java en: 9 Octubre 2018, 01:56 am
Buenas rub'n ,

estoy conociendo ahora Structs 2, y la verdad es que me está gustando como framework, Springframework no lo he trabajado aun.

En cuanto a tus indicaciones, muchas gracias, lo intentaré así. En cualquier caso, sabes como funciona exactamente Quartz internamente? Me refiero a como programa los trabajos. (Esto último es solo curiosidad  :laugh:)

Un saludo.

Pues desde luego que no, guíate por su API  ;D
827  Programación / Java / Re: Envío de correo programado en otra fecha en Java en: 5 Octubre 2018, 04:38 am
Hola, que tal, Structs 2  >:( porque no Springframework :D ? pero bueno que mas da

bueno mira, usa


https://mvnrepository.com/artifact/org.quartz-scheduler/quartz/2.3.0

Código
  1. <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
  2. <dependency>
  3.    <groupId>org.quartz-scheduler</groupId>
  4.    <artifactId>quartz</artifactId>
  5.    <version>2.3.0</version>
  6. </dependency>

Código
  1. <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
  2. <dependency>
  3.    <groupId>javax.mail</groupId>
  4.    <artifactId>javax.mail-api</artifactId>
  5.    <version>1.6.2</version>
  6. </dependency>


Esto te ayuda a crear la expresion de cron http://www.cronmaker.com/



creas una clase que implente a Job, en ese metodo execute manda el mail

Código
  1. public class TimerClass implements Job {
  2.  
  3.    public TimerClass() {
  4.  
  5.    }
  6.  
  7.    @Override
  8.    public void execute(JobExecutionContext jobExecutionContext) {
  9.         //Logica del mail aqui
  10.          try {
  11.               System.out.println("Hola");
  12.          }catch(JobExecutionException  ex) {
  13.          }
  14.  
  15.    }
  16. }
  17.  

En tu clase que implementa el ServletContextListener dentro del método

Código
  1. public void contextInitialized(ServletContextEvent param){
  2. new ExecTimer();
  3. }
  4.  

Código
  1. public class ExecTimer {
  2.  
  3.    private JobDetail job;
  4.    private Trigger trigger;
  5.    private Scheduler scheduler;
  6.  
  7.    private static final String TWENTY_SEC = "0/20 * * * * ?"; //cada 20 segundos
  8.  
  9.                                      //seg,min,hora,dia,mes,diaSemana,Año(Opcional)
  10.                                              //todos los viernes a las 6:30AM
  11.    private static final String FECHA_FUTURA = "00 30 6 ? * FRI";   // http://www.cronmaker.com/
  12.  
  13.  
  14.    public ExecTimer() {
  15.        initTask();
  16.    }
  17.  
  18.    private void initTask() {
  19.        try {
  20.            job = JobBuilder.newJob(TimerClass.class)
  21.                    .withIdentity("EnviarMail")
  22.                    .build();
  23.            trigger = TriggerBuilder
  24.                    .newTrigger()
  25.                    .withSchedule(CronScheduleBuilder.cronSchedule(FECHA_FUTURA))
  26.                    .build();
  27.            scheduler = new StdSchedulerFactory().getScheduler();
  28.            scheduler.start();
  29.            scheduler.scheduleJob(job, trigger);
  30.        } catch (SchedulerException e) {
  31.            e.printStackTrace();
  32.        }
  33.    }
  34. }

Con Springboot seria mas facil aun, menos codigo y sin .xml  >:D

Código
  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. import org.springframework.scheduling.annotation.EnableAsync;
  4. import org.springframework.scheduling.annotation.EnableScheduling;
  5.  
  6. @EnableScheduling
  7. @SpringBootApplication
  8. public class Application {
  9.  
  10.    public static void main(String ...blabla) {
  11.        SpringApplication.run(Application.class);
  12.    }
  13.  
  14. }
  15.  


Código
  1.  
  2. @Scheduled(cron= "00 30 6 ? * FRI")
  3. public void enviarMail() {
  4.    System.out.println("Hola, ");
  5. }
  6.  

Y otra cosa importante la operación de envío del mail puedes ejecutarla de manera asíncrona, hay mucha maneras de hacerlo con java, hará que tu aplicación no se bloquee, mas reactiva  :D
828  Programación / Java / Re: Llamar objetos desde un switch en: 5 Octubre 2018, 01:38 am
Conste que yo conteste primero, así que te quedas eternamente agradecido de mi, no del usurpador de respuestas "rub'n".. (dicen que el mastica con la boca abierta).

PD: rub'n, uno que se esfuerza por no ponerle el código completo y no hacerle la tarea... y tu llegas y lo arregas, hahahaha

Ni te creeas que quiero discutir  :xD
829  Programación / Java / Re: Llamar objetos desde un switch en: 5 Octubre 2018, 01:17 am
tal cual como te dice 3n31ch , añadiendo tambien que uses modificadores de acceso como private por convencion también de esta manera puedes hacerlo


Código
  1. package foro;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class TestDelObligatorioV2 {
  6.  
  7.    private Scanner dato;
  8.    private int num, list;
  9.    private int datos[];
  10.    private String nombre[] = new String[0];
  11.    private String apellido[] = new String[0];
  12.    private String telefono[] = new String[0];
  13.  
  14.    public TestDelObligatorioV2() {
  15.  
  16.    }
  17.  
  18.    public void iniciar() {
  19.        int n;
  20.        dato = new Scanner(System.in);
  21.        System.out.println("Bienvenido!...");
  22.        System.out.println("1- Ingreso de datos");
  23.        System.out.println("2- Listado de datos");
  24.        System.out.println("3- Buscar por nombre");
  25.        System.out.println("4- Buscar por telefono");
  26.  
  27.        do {
  28.            System.out.print("Opcion: ");
  29.            n = dato.nextInt();
  30.            switch (n) {
  31.                case 1:
  32.                    //Aca quiero llamar a op1
  33.                    op1();
  34.                    break;
  35.                case 2 :
  36.                    op2();
  37.                    break;
  38.            }
  39.  
  40.  
  41.        } while (n != 0 && n < 5);
  42.  
  43.  
  44.    } //Aca se van a cargar los datos y crear los vectores
  45.  
  46.  
  47.    public void op1() {
  48.        System.out.print("Cuantos datos se ingresaran? ");
  49.        num = dato.nextInt();
  50.        datos = new int[num];
  51.        nombre = new String[num];
  52.        apellido = new String[num];
  53.        telefono = new String[num];
  54.        dato.nextLine();
  55.        for (int i = 0; i < num; i++) {
  56.            System.out.print("Ingrese nombre: ");
  57.            nombre[i] = dato.nextLine();
  58.            System.out.print("Ingrese apellido: ");
  59.            apellido[i] = dato.nextLine();
  60.            System.out.print("Ingrese telefono: ");
  61.            telefono[i] = dato.nextLine();
  62.        }
  63.    } //Aca se van a mostrar los datos de los vectores
  64.  
  65.    public void op2() {
  66.        System.out.println("Cuantos datos quiere ver? ");
  67.        list = dato.nextInt();
  68.        System.out.println("Listado de datos:");
  69.        System.out.println("--------------------------");
  70.        for (int i = 0; i < list; i++) {
  71.            System.out.println(apellido[i] + " " + nombre[i] + " - " + telefono[i]);
  72.  
  73.        }
  74.    }
  75.  
  76.    public static void main(String[] args) {
  77.        TestDelObligatorioV2 prueba = new TestDelObligatorioV2();
  78.        prueba.iniciar();
  79.        prueba.op1();
  80.        prueba.op2();
  81.    }
  82.  
  83. }
  84.  

El metodo op2() usa el array que previamente has llenado linea 7 puedes ver la diferencia, con ese accedes a cada index de tu array
Código
  1. public void op2() {
  2.        System.out.println("Cuantos datos quiere ver? ");
  3.        list = dato.nextInt();
  4.        System.out.println("Listado de datos:");
  5.        System.out.println("--------------------------");
  6.        for (int i = 0; i < list; i++) {
  7.            System.out.println(apellido[i] + " " + nombre[i] + " - " + telefono[i]);
  8.        }
  9.    }
830  Programación / Java / Re: Colocar Boton de Modificar en celda de JTable en: 3 Octubre 2018, 19:04 pm
Hola,

esto te puede servir



Creamos una constante tipo String para el PreparedStatement nuestra sentencia precompilada

Código
  1. private static final String UPDATE = "UPDATE customer SET first_name=?, last_name=? WHERE id=?";

Añadimos una columna que contendrá nuestro botón

Código
  1. defaultTableModel.addColumn("Update item");

Obtenemos el nombre de la columna y le seteamos los 2 objetos de las clases que permitiran el update
Código
  1. jTable.getColumn("Update item").setCellEditor(new UpdateItem());
  2. jTable.getColumn("Update item").setCellRenderer(new BotonRenderizado());
  3.  

Añadimos un mouseListener a la tabla para setear los valores en el form con el click , tu debes hacer el ajuste con tu código
Código
  1.  jTable.addMouseListener(new MouseAdapter() {
  2.            @Override
  3.            public void mouseClicked(MouseEvent e) {
  4.                int seletedRow = jTable.getSelectedRow();
  5.                DefaultTableModel defaultTableModel = (DefaultTableModel) jTable.getModel();
  6.                jTextFieldID.setText(defaultTableModel.getValueAt(seletedRow, 0).toString());
  7.                jTextFirsName.setText(defaultTableModel.getValueAt(seletedRow, 1).toString());
  8.                jTextLastName.setText(defaultTableModel.getValueAt(seletedRow, 2).toString());
  9.            }
  10.        });


Creamos una clase que extiende de JButton

Código
  1. public class BotonRenderizado extends JButton implements TableCellRenderer {
  2.  
  3.     @Override
  4.    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  5.        if (value != null) {
  6.            setText("");
  7.        } else {
  8.            setText("update");
  9.        }
  10.        if (isSelected) {
  11.            setForeground(table.getSelectionForeground());
  12.            setBackground(table.getSelectionBackground());
  13.        } else {
  14.            setForeground(table.getForeground());
  15.            setBackground(UIManager.getColor("Button.background"));
  16.        }
  17.        return this;
  18.    }
  19. }
  20.  

Aquí es donde esta la verdadera lógica del botón en la tabla desde la linea 21 a 38 es un ejemplo que te pongo, tu debes de programarlo acorde a tu código

en la linea 33 puedes usar también DbUtils para ahorrarte mas lineas de código, sirve para refrescar la tabla

Código
  1. private class UpdateItem extends AbstractCellEditor implements TableCellEditor {
  2.  
  3.        private JButton editor = new JButton();
  4.        private Object value;
  5.        private int fila;
  6.        private JTable table;
  7.  
  8.        public UpdateItem() {
  9.  
  10.            updateItem();
  11.  
  12.        }
  13.  
  14.        private void updateItem() {
  15.            editor.addActionListener(e -> {
  16.                if (table != null) {
  17.                    fireEditingStopped();
  18.                    TableModel model = table.getModel();
  19.                    if (model instanceof DefaultTableModel) {
  20.                        try {
  21.                            int getrow = table.getSelectedRow();
  22.                            final Long id = Long.valueOf(jTextFieldID.getText());
  23.                            final String firstName = jTextFirsName.getText();
  24.                            final String lastName = jTextLastName.getText();
  25.  
  26.  
  27.                            final PreparedStatement ps = connection.prepareStatement(UPDATE);
  28.                            ps.setString(1, firstName);
  29.                            ps.setString(2, lastName);
  30.                            ps.setLong(3, id);
  31.                            ps.executeUpdate();
  32.  
  33.                            //DbUtils
  34.                            model.setValueAt(id, getrow, 0);
  35.                            model.setValueAt(firstName, getrow, 1);
  36.                            model.setValueAt(lastName, getrow, 2);
  37.  
  38.                            JOptionPane.showMessageDialog(null, "Updated");
  39.  
  40.                        } catch (SQLException ex) {
  41.                            ex.printStackTrace();
  42.                        }
  43.                    }
  44.                }
  45.            });
  46.        }
  47.  
  48.        @Override
  49.        public boolean isCellEditable(EventObject e) {
  50.            return true;
  51.        }
  52.  
  53.        @Override
  54.        public Object getCellEditorValue() {
  55.            return value;
  56.        }
  57.  
  58.        @Override
  59.        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
  60.            this.table = table;
  61.            this.fila = row;
  62.            this.value = value;
  63.            if (value != null) {
  64.                editor.setText("");
  65.            } else {
  66.                editor.setText("update");
  67.            }
  68.            if (isSelected) {
  69.                editor.setForeground(table.getSelectionForeground());
  70.                editor.setBackground(table.getSelectionBackground());
  71.            } else {
  72.                editor.setForeground(table.getForeground());
  73.                editor.setBackground(UIManager.getColor("Button.background"));
  74.            }
  75.            return editor;
  76.        }
  77.    }


Código
  1. package foro;
  2.  
  3. import javax.swing.*;
  4. import javax.swing.table.DefaultTableModel;
  5. import javax.swing.table.TableCellEditor;
  6. import javax.swing.table.TableModel;
  7. import java.awt.*;
  8. import java.awt.event.MouseAdapter;
  9. import java.awt.event.MouseEvent;
  10. import java.sql.*;
  11. import java.util.EventObject;
  12.  
  13. public class ConnectJDBCTest extends JFrame {
  14.  
  15.    private static final String URL = "jdbc:mysql://localhost:3306/demo?useSSL=false";
  16.    private static final String USERNAME = "root";  //mala practica
  17.    private static final String PASSWORD = "password"; // mala practica
  18.  
  19.    private static final String SELECT = "SELECT id, first_name, last_name FROM customer";
  20.    private static final String UPDATE = "UPDATE customer SET first_name=?, last_name=? WHERE id=?";
  21.    private static final String DELETE = "DELETE FROM customer where id = ";
  22.  
  23.    private DefaultTableModel defaultTableModel = new DefaultTableModel();
  24.    private JTable jTable = new JTable(defaultTableModel);
  25.    private JScrollPane jScrollPane = new JScrollPane(jTable);
  26.    private Long id;
  27.    private String firstName;
  28.    private String lastName;
  29.  
  30.    private JTextField jTextFieldID = new JTextField(10);
  31.    private JTextField jTextFirsName = new JTextField(10);
  32.    private JTextField jTextLastName = new JTextField(10);
  33.  
  34.    private static Connection connection = null;
  35.  
  36.    public ConnectJDBCTest() {
  37.        initLayout();
  38.        initConnection();
  39.    }
  40.  
  41.    private void initLayout() {
  42.  
  43.        defaultTableModel.addColumn("Id");
  44.        defaultTableModel.addColumn("First Name");
  45.        defaultTableModel.addColumn("Last Name");
  46.        defaultTableModel.addColumn("Update item");
  47.  
  48.  
  49.        jTable.addMouseListener(new MouseAdapter() {
  50.            @Override
  51.            public void mouseClicked(MouseEvent e) {
  52.                int seletedRow = jTable.getSelectedRow();
  53.                DefaultTableModel defaultTableModel = (DefaultTableModel) jTable.getModel();
  54.                jTextFieldID.setText(defaultTableModel.getValueAt(seletedRow, 0).toString());
  55.                jTextFirsName.setText(defaultTableModel.getValueAt(seletedRow, 1).toString());
  56.                jTextLastName.setText(defaultTableModel.getValueAt(seletedRow, 2).toString());
  57.            }
  58.        });
  59.  
  60.        jTable.getColumn("Update item").setCellEditor(new UpdateItem());
  61.        jTable.getColumn("Update item").setCellRenderer(new BotonRenderizado());
  62.  
  63.        final JPanel jPanel = new JPanel();
  64.        jPanel.setLayout(new BorderLayout());
  65.        jPanel.add(jScrollPane, BorderLayout.NORTH);
  66.  
  67.        final JPanel jPanelSur = new JPanel();
  68.        jPanelSur.add(new JLabel("ID"));
  69.        jPanelSur.add(jTextFieldID);
  70.        jPanelSur.add(new JLabel("First Name"));
  71.        jPanelSur.add(jTextFirsName);
  72.        jPanelSur.add(new JLabel("Last Name"));
  73.        jPanelSur.add(jTextLastName);
  74.  
  75.        jPanel.add(jPanelSur, BorderLayout.SOUTH);
  76.  
  77.        add(jPanel);
  78.  
  79.        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  80.        setLocationRelativeTo(null);
  81.        pack();
  82.        setVisible(true);
  83.    }
  84.  
  85.    private void initConnection() {
  86.        try {
  87.            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
  88.            final Statement statement = connection.createStatement();
  89.            final ResultSet resultSet = statement.executeQuery(SELECT);
  90.            while (resultSet.next()) {
  91.                id = resultSet.getLong("id");
  92.                firstName = resultSet.getString("first_name");
  93.                lastName = resultSet.getString("last_name");
  94.                defaultTableModel.addRow(new Object[]{id, firstName, lastName});
  95.            }
  96.        } catch (SQLException e) {
  97.            e.printStackTrace();
  98.        }
  99.    }
  100.  
  101.    private class UpdateItem extends AbstractCellEditor implements TableCellEditor {
  102.  
  103.        private JButton editor = new JButton();
  104.        private Object value;
  105.        private int fila;
  106.        private JTable table;
  107.  
  108.        public UpdateItem() {
  109.  
  110.            updateItem();
  111.  
  112.        }
  113.  
  114.        private void updateItem() {
  115.            editor.addActionListener(e -> {
  116.                if (table != null) {
  117.                    fireEditingStopped();
  118.                    TableModel model = table.getModel();
  119.                    if (model instanceof DefaultTableModel) {
  120.                        try {
  121.                            int getrow = table.getSelectedRow();
  122.                            final Long id = Long.valueOf(jTextFieldID.getText());
  123.                            final String firstName = jTextFirsName.getText();
  124.                            final String lastName = jTextLastName.getText();
  125.  
  126.  
  127.                            final PreparedStatement ps = connection.prepareStatement(UPDATE);
  128.                            ps.setString(1, firstName);
  129.                            ps.setString(2, lastName);
  130.                            ps.setLong(3, id);
  131.                            ps.executeUpdate();
  132.  
  133.                            //DbUtils
  134.                            model.setValueAt(id, getrow, 0);
  135.                            model.setValueAt(firstName, getrow, 1);
  136.                            model.setValueAt(lastName, getrow, 2);
  137.  
  138.                            JOptionPane.showMessageDialog(null, "Updated");
  139.  
  140.                        } catch (SQLException ex) {
  141.                            ex.printStackTrace();
  142.                        }
  143.                    }
  144.                }
  145.            });
  146.        }
  147.  
  148.        @Override
  149.        public boolean isCellEditable(EventObject e) {
  150.            return true;
  151.        }
  152.  
  153.        @Override
  154.        public Object getCellEditorValue() {
  155.            return value;
  156.        }
  157.  
  158.        @Override
  159.        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
  160.            this.table = table;
  161.            this.fila = row;
  162.            this.value = value;
  163.            if (value != null) {
  164.                editor.setText("");
  165.            } else {
  166.                editor.setText("update");
  167.            }
  168.            if (isSelected) {
  169.                editor.setForeground(table.getSelectionForeground());
  170.                editor.setBackground(table.getSelectionBackground());
  171.            } else {
  172.                editor.setForeground(table.getForeground());
  173.                editor.setBackground(UIManager.getColor("Button.background"));
  174.            }
  175.            return editor;
  176.        }
  177.    }
  178.  
  179.    public static void main(String... blabla) {
  180.        final String osType = System.getProperty("os.name");
  181.        try {
  182.            if (osType.contains("Win")) {
  183.                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
  184.            } else if (osType.contains("Linux")) {
  185.                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
  186.            }
  187.        } catch (Exception ex) {
  188.            //do nothing
  189.        }
  190.        new Thread(() -> {
  191.            new ConnectJDBCTest();
  192.        }).start();
  193.    }
  194. }
  195.  

Selecciona primero un item, editalo , luego actualiza

Páginas: 1 ... 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 ... 139
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines