Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > ¿Se puede pasar un implements de Jframe a jDialog?

Hey hola. Tengo un problema. estoy haciendo un pequeño juego de cartas, implementando tecnología TUIO [multitáctil].
el juego en sí funciona con esta tecnología, así que por ese lado no hay problemas. el problema es cuando quiero que un diálogo aparte funcione con ella.

abrir dicho diálogo no es un problema ya que el botón encargado está en la ventana principal, la que sí funciona con TUIO, el problema es manejarme táctilmente en él: Parece que no recibe nada.

ahora les explico:
TuioListener es una clase abstracta de tuio que te obliga a implementar unos métodos para añadir, actualizar y eliminar cursores [Cada cursor sería un dedo], uno para hacer un Refresh, y otros 3 que son como los de cursores, pero para objetos.
en este caso, solamente se necesitan los 4 primeros y se actualizan constantemente [otra clase de TUIO se encarga de refrescar cada milisegundo las entradas, movimientos y salidas de cursores].

los métodos te los entrega vacíos para que hagas lo que proceda con ellos. y en el jFrame principal eso está hecho.

ahora bien, cuando creo el nuevo diálogo [uno de selección de dificultad], necesito implementar de nuevo los métodos de cursores y refresh. de nuevo uso Implements tuioListener y reescribo los métodos. pero no hace absolutamente NADA. no entra en dichos métodos.

¿se puede pasar un implements a otro diálogo y sobreescribir los métodos?
¿Alguien tiene alguna sugerencia?

diciembre 7, 2011 | Unregistered CommenterBateras

Por lo que he visto en tuio.org sobre la cuestión, TuioListener es un interface, no una clase abstracta.
Como no especifica que tipo de listener es, no tengo claro si se puede añadir sin más a un componente de Swing.
La única implementación documentada en el API se refiere a una clase propia, TuioClient.
En cualquier caso, tratándose de un listener, en teoría se podría añadir como tal a un componente; falta comprobar qué clase de listener aplica.
¿Podrías explicar con código cómo y dónde implementas ese listener?.

diciembre 7, 2011 | Registered Commenterchoces

No sé si esto te servirá como código, pero lo intento en imágenes:

primero, el árbol de clases del proyecto es el siguiente:
ArbolClases

después, cabecera de la clase principal [vista1]
cabeceraProyecto

implementación de los métodos de la interfaz TuioListener (además de Refresh, que no aparece, pero está implementado con un repaint, y otros 3 para el uso de tuioObjects que no uso y hacen un throws un " throw new UnsupportedOperationException("Not supported yet."); "
cursoresVista

cabecera del diálogo
cabeceraDialogo

implementación de los cursores en el diálogo
cursoresDialogo

diciembre 7, 2011 | Unregistered CommenterBateras

Lo que no veo es dónde registras el listener.

diciembre 7, 2011 | Registered Commenterchoces

lo lamento, pero no sé qué quieres decir con registrar el listener.
las veces que se usa el listener de tuio es en lo que muestro en las imágenes
en la cabecera
implements TuioListener
y los métodos que te hace poner

@Override
public void addTuioCursor(TuioCursor tc) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void updateTuioCursor(TuioCursor tc) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void removeTuioCursor(TuioCursor tc) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void refresh(TuioTime tt) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void addTuioObject(TuioObject to) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void updateTuioObject(TuioObject to) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void removeTuioObject(TuioObject to) {
throw new UnsupportedOperationException("Not supported yet.");
}


En caso de que quieras saber algo del cliente Tuio, tengo estos 2 métodos y la llamada a uno de ellos en el constructor


public Vista1() {
initComponents();

imageAdv = new ImageIcon(getClass().getResource("imagenes/yao.jpg"));
imageCarta = new ImageIcon(getClass().getResource("imagenes/trollface.jpg"));
imageExit = new ImageIcon(getClass().getResource("imagenes/nothing.jpg"));
ejecutarClienteTuio();
initCustomComponents();
}



public final void ejecutarClienteTuio() {

client = new TuioClient();

resetTuioClient();
if (client != null) {
client.addTuioListener(this);
client.connect();
if (client.isConnected() == false) {
JOptionPane.showMessageDialog(this, "Error al conectar. La aplicación se cerrará: REINICIE EL SIMULADOR");
System.exit(0);
}
} else {
System.out.println("usage: java TuioDemo [port]");
System.exit(0);
}
}

public final void resetTuioClient() {
if (client != null && client.isConnected()) {
client.disconnect();
}
}

diciembre 7, 2011 | Registered Commenterbateras

Si te refieres a que si he hecho un
x.addTuioListener(...)
tenéis que saber que tuio no funciona así.
una vez se ejecuta el cliente, está conectado con el programa que envía las entradas táctiles. Internamente, tiene una clase llamada TuioTime que se encarga de actualizarse cada milisegundo y comprobar si se añaden, actualizan o eliminan cursores u objetos. por tanto no necesitamos hacer ningún tipo de AddTuioListener ni similares, porque está en marcha y los cursores y objetos aparecen automáticamente cuando son detectados por el programa encargado de ello.

diciembre 7, 2011 | Registered Commenterbateras