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

keyListener Linux y windows

Estas en el tema de keyListener Linux y windows en el foro de Java en Foros del Web. Disculpen quisiera preguntar acerca de mi código, funciona en windows (NetBeans 6.9.1) pero al pasar a linux (sea ubuntu que yo uso o scientific linux ...
  #1 (permalink)  
Antiguo 09/07/2011, 09:36
Avatar de afranco  
Fecha de Ingreso: julio-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta keyListener Linux y windows

Disculpen quisiera preguntar acerca de mi código, funciona en windows (NetBeans 6.9.1) pero al pasar a linux (sea ubuntu que yo uso o scientific linux en mi uni ambos con NetBeans 6.9) no funciona el keyListener, me pregunto porque, este es parte de mi código:

public class Main extends JApplet implements Runnable,KeyListener{
...

public void init () {...; addKeyListener( this );//ESTO PARECE QUE NO SE REGISTRA
...}

public void paint(Graphics g){.... //grafica en cada tiempo las balas esfericas ....}

public void start(){ //Comienza la animacion
if(anima ==null){anima=new Thread(this); anima.start();}}

public void run() { long t=System.currentTimeMillis();
while (true) { mueveBalas();
try{t+=retardo; Thread.sleep(Math.max(0, t-System.currentTimeMillis()));
}catch(InterruptedException ex){ break;} } }

public void startBall(){//bota una nueva bala ...}

void mueveBalas(){... repaint();}

public void keyPressed( KeyEvent LPres )//ESTO TIENE PROBLEMAS{
//me explico esto que sigue: si se presiona "v" o "p" este queda registrado en Listener como se ve en KeyReleased entonces con las flechas se modifica las direcciones de disparo
switch (LPres.getKeyCode()){
case KeyEvent.VK_LEFT:
if(Listener=="v"){vx0--;} if(Listener=="p"){x0--;} break;
case KeyEvent.VK_RIGHT:
if(Listener=="v"){vx0++;} if(Listener=="p"){x0++;} break;
case KeyEvent.VK_UP:
if(Listener=="v"){vy0--;} if(Listener=="p"){y0--;} break;
case KeyEvent.VK_DOWN:
if(Listener=="v"){vy0++;} if(Listener=="p"){y0++;} break;} }

public void keyReleased( KeyEvent LPres )//ESTO TAMBIEN
{
switch (LPres.getKeyCode()){
case KeyEvent.VK_V:
Listener="v"; Listen=" Velocidad seleccionado"; break;
case KeyEvent.VK_P:
Listener="p"; Listen=" Posicion seleccionado"; break;
....//lo siguiente es lo mismo que keyPressed}

public void keyTyped( KeyEvent LPres )
{
}
}


Siempre pensé que programar en Java era igual en Windows y en Linux por su filosofía, y mas si se usaban NetBeans en los 2, pero veo que no es así con esto, ¿que debería tomar en cuenta al usar alguno de los 2?

Muchas gracias
  #2 (permalink)  
Antiguo 09/07/2011, 21:26
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 6 meses
Puntos: 188
Respuesta: keyListener Linux y windows

Amigo, recuerda que tu programa está hecho en Java, y todos los programas de JAVA corren en la máquina virtual de JAVA (no depende del sistema operativo)

Si tu programa funciona en la JMV de tu ordenador funcionará en todas las demás JMV incluso la de los equipos móviles. Así que el problema no es éste.

Ya que tu escuchador de eventos espera recibir una tecla "v" o una "p"; por ejemplo.

Puede que sea aqui donde puede que se presente el problema. Habrá alguna diferencia entre ambos sistemas operativos.

Espero que alguien te ayude a solucionar tu problema

un saludo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: linux, netbeans, windows
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 00:23.