Foros del Web » Programación para mayores de 30 ;) » Java »

capturar evento JavaBeans

Estas en el tema de capturar evento JavaBeans en el foro de Java en Foros del Web. Hola, tengo un problema porque no entiendo muy bien como se capturan los eventos en los JavaBeans. Parto del ejemplo de un JavaBeans temporizador que ...
  #1 (permalink)  
Antiguo 04/01/2015, 08:30
 
Fecha de Ingreso: diciembre-2014
Ubicación: España
Mensajes: 8
Antigüedad: 9 años, 11 meses
Puntos: 0
capturar evento JavaBeans

Hola, tengo un problema porque no entiendo muy bien como se capturan los eventos en los JavaBeans.
Parto del ejemplo de un JavaBeans temporizador que cuando llega a 0, muestra un mensaje.

Código:
public class FinCuentaAtrasEvent extends java.util.EventObject
{
    // constructor, se le pasa el objeto y un identificador.
    public FinCuentaAtrasEvent(Object source)
    {
        super(source);
    }
}

//Define la interfaz para el nuevo tipo de evento
public interface FinCuentaAtrasListener extends EventListener
{
    void capturarFinCuentaAtras(FinCuentaAtrasEvent ev);
}


    protected int tiempo;
    public static final String PROP_TIEMPO = "tiempo";
    private FinCuentaAtrasListener receptor;


public void actionPerformed(ActionEvent e)
    {
        // Aquí el código que queramos ejecutar.
        setText(Integer.toString(tiempo));
        repaint();
        tiempo--;
        if(tiempo == 0){
            setActivo(false);
            //JOptionPane.showMessageDialog(null, "Terminado", "Aviso",
            //JOptionPane.INFORMATION_MESSAGE);
            receptor.capturarFinCuentaAtras( new FinCuentaAtrasEvent(this));
        }
    }


    public void addFinCuentaAtrasListener(FinCuentaAtrasListener receptor)
    {
        this.receptor = receptor;
    }

    public void removeFinCuentaAtrasListener(FinCuentaAtrasListener receptor)
    {
        this.receptor=null;
    }
Y en la clase donde pruebo el JavaBeans temporizador, que es una aplicación de escritorio Java, implemento la acción FinCuentaAtras (accedo con el botón derecho, Eventos, FinCuentaAtras)

Código:
private void temporizadorBean1CapturarFinCuentaAtras(Temporizador.TemporizadorBean.FinCuentaAtrasEvent evt) {                                                         
        // TODO add your handling code here:
        JOptionPane.showMessageDialog(null, "¡¡Fin!!", "Aviso",
        JOptionPane.INFORMATION_MESSAGE);
    }
Lo que tengo que realizar yo es capturar el evento cuando la hora de un reloj coincida con la de la alarma establecida en las propiedades del reloj (JavaBean)

He copiado la clase FinCuentaAtrasEvent y la interface FinCuentaAtrasListener, y la captura con esta condición:

Código:
if(horaReal==alarma.getHora()& minutosReal==alarma.getMinuto()&alarma.isActivo()){
        //JOptionPane.showMessageDialog(null,"Alarma");
        receptor.capturarFinCuentaAtras( new FinCuentaAtrasEvent(this));
Cuando pruebo este JavaBean no tengo en el menú contextual de eventos el FinCuentaAtras, no se a que se debe esto...

Introduzco el código del evento a mano
Código:
private void relojBean2CapturarFinCuentaAtras(Reloj.RelojBean.FinCuentaAtrasEvent evt) {                                                         
        // TODO add your handling code here:
        JOptionPane.showMessageDialog(null, "¡¡Alarma!!", "Aviso",
        JOptionPane.INFORMATION_MESSAGE);
    }
Y me aparace este error
Código:
ene 04, 2015 3:32:30 PM org.jdesktop.application.Application$1 run
GRAVE: Application class desktopapplication1.DesktopApplication1 failed to launch
java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
	at desktopapplication1.DesktopApplication1View.initComponents(DesktopApplication1View.java:125)
	at desktopapplication1.DesktopApplication1View.<init>(DesktopApplication1View.java:28)
	at desktopapplication1.DesktopApplication1.startup(DesktopApplication1.java:19)
	at org.jdesktop.application.Application$1.run(Application.java:171)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
	at java.awt.EventQueue.access$400(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:697)
	at java.awt.EventQueue$3.run(EventQueue.java:691)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Exception in thread "AWT-EventQueue-0" java.lang.Error: Application class desktopapplication1.DesktopApplication1 failed to launch
	at org.jdesktop.application.Application$1.run(Application.java:177)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
	at java.awt.EventQueue.access$400(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:697)
	at java.awt.EventQueue$3.run(EventQueue.java:691)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
	at desktopapplication1.DesktopApplication1View.initComponents(DesktopApplication1View.java:125)
	at desktopapplication1.DesktopApplication1View.<init>(DesktopApplication1View.java:28)
	at desktopapplication1.DesktopApplication1.startup(DesktopApplication1.java:19)
	at org.jdesktop.application.Application$1.run(Application.java:171)
	... 14 more
BUILD SUCCESSFUL (total time: 4 seconds)
relojBean1.setAlarma(???);


¿Alguien me podría orientar un poco y decirme que estoy haciendo mal o qué camino debo seguir?

Gracias de antemano, saludos.
  #2 (permalink)  
Antiguo 04/01/2015, 11:17
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: capturar evento JavaBeans

Buenas,

Te está fallando algo, pero es imposible decirte el qué, ya que no tiene nada que ver con lo que has publicado.

En concreto te falla la línea 125 de la clase DesktopApplication1View

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 04/01/2015, 11:21
 
Fecha de Ingreso: diciembre-2014
Ubicación: España
Mensajes: 8
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: capturar evento JavaBeans

Si,

Y la línea 125 de la clase DesktopApplication1View pone lo siguiente:

relojBean1.setAlarma(???);

Este código lo genera la aplicación al ejecutarlo.

Gracias y saludos.
  #4 (permalink)  
Antiguo 04/01/2015, 11:27
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: capturar evento JavaBeans

Cita:
Y la línea 125 de la clase DesktopApplication1View pone lo siguiente:

relojBean1.setAlarma(???);
Sería interesante ver lo que se hace en ese initComponent ya que nadie sabe que es relojBean1 ni que firma tiene ni que hace el método setAlarma.
Habría que ver como se genera ese código... Quien lo genera???

En cualquier caso es normal que te falle si le está pasando "???" como parámetro a un método.


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: clase, evento, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:59.