Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/07/2013, 11:26
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Declarar metodos despues de crear un objeto

Hola:

Cuando heredas de una clase, puedes sobreescribir los métodos de la clase padre, bien para cambiar su comportamiento, bien porque la clase padre es abstracta y necesitas implementar ese método, o incluso la clase padre es una interfaz y necesitas implementar todos sus métodos.

En java, al tirar mucho de interfaces y clases abstractas (todo tipo de listeners como ActionListener, MouseLintener, TableModelListener, etc) es muy habitual heredar e implementar métodos, a veces, a lo tonto, como el caso de ActionListener que sólo tiene un método o de Runnable, que sólo tiene un método. Así que java ofrece una forma "ágil" de definir una clase hija con estos métodos sobre la marcha, que es lo que estás viendo.

Cuando haces algo como lo que muestras, estás en realidad creando una clase hija (de JTable en tu caso) con un método sobreescrito (getCellEditor()). Es más habitual ver esto en botones así

Código Java:
Ver original
  1. jbutton.addActionListener (
  2.    new ActionListener () {
  3.       public void actionPerformed(ActionEvent e) {
  4.         // Aqui lo que tiene que hacer el botón cuando lo pulsas
  5.       }
  6.    }
  7. );

Aquí estás creando una clase hija (que implementa) ActionListener y definiendo su método sobre la marcha. Te ahorras crear una clase de verdad con fichero java incluido que implemente la interfaz. La "pega" es que esa clase hija no puedes utilizarla en más sitios, la has creado sobre la marcha y no tiene un nombre "ClaseHija" con el que poder hacer nuevos news.

Si miras los ficheros.class generados, verás que hay uno estilo NombreClase$1.class (o algo así) . Esa es la clase hija de ActiloListener que has creado al vuelo. En tu proyecto, deberías tener algo parecido para la clase hija de JTable al vuelo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación