Java - Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton cannot be..

 
Vista:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton cannot be..

Publicado por Jessica (3 intervenciones) el 28/10/2018 20:41:08
Me aparece este error: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton cannot be cast to buscaminasinterfaz.Boton

al hacer esto:
1
Boton b = (Boton) e.getSource();



Mi clase Boton es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package buscaminasinterfaz;
 
import javax.swing.JButton;
import buscaminasinterfaz.Casilla;
 
 
public class Boton extends JButton{
 
  public int x;
  public int y;
  public Casilla casilla;
 
  public Boton(){
      this.setSize(35,35);
 
  }
 
}


Me podrían decir por qué me aparece?
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

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton cannot be..

Publicado por Alfredo (1 intervención) el 30/10/2018 01:03:49
La información acerca del suceso

En el estudio de la función respuesta a la acción de pulsar sobre un botón, o de hacer doble-clic sobre un elemento de una lista, el objeto ev de la clase ActionEvent, nos proporciona información acerca del suceso que se ha producido, nos dice qué control ha generado el suceso. Por ejemplo, podemos saber mediante la función miembro getSource si el suceso procede de la acción sobre un botón, de un control lista, o de un control de edición, etc.

En el código de la función respuesta actionPerformed, podemos saber si el control sobre el que se ha actuado es una instancia de la clase Button mediante el operador instanceof

1
2
3
4
Object control=ev.getSource();
if(control instanceof Button){
    System.out.println("Se ha pulsado un botón");
}

Si hay varias botones, podemos saber cual de ellos ha sido pulsado mediante equals.
1
2
3
4
Object control=ev.getSource();
if(control.equals(btnAceptar){
    System.out.println("Se ha pulsado el botón Aceptar");
}

Mediante getAccionCommand obtenemos el nombre (etiqueta) del botón. Podemos saber si se ha pulsado sobre un botón titulado "Rojo".

1
2
3
4
String nombre=ev.getActionCommand();
if(nombre.equals("Rojo"){
    System.out.println("Se ha pulsado el botón Rojo");
}
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

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton cannot be..

Publicado por Jessica (3 intervenciones) el 30/10/2018 01:08:48
Muchas gracias Alfredo, me salvaste en verdad. 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