Mira, te respondo aquí por que por privado cual es el chiste, se supone que alguien mas lo vea por si tienen el mismo problema..
Tu forma de comparar nni si quiera vi si era valida pero yo siempre lo hice asi:
e.getKeyCode()==KeyEvent.VK_LEFT Cita: if(KeyEvent.getKeyText(e.getKeyCode()).equals("Izq uierda"))
{
x-=40;
repaint();
//sonido.play();
}
Ponlo asi:
Cita: if(e.getKeyCode() == KeyEvent.VK_LEFT)
{
x-=40;
repaint();
}
El método getKeyCode() te regresa un entero, entonces lo comparas con el entero estático de la tecla izquierda que se obtiene haciendo uso de la clase KeyEvent.....
VK_LEFT (tecla de la izquierda)
VK_RIGHT (tecla de derecha)
VK_UP (arriba)
VK_DOWN (abajo)
Consulta la documentacion de Java, disponible en el sitio de Oracle, y revisa el apartado de la clase KeyEvent para que veas todas la sintaxis para hacer referencia a las demas teclas...
Con eso debe funcionarte, y sobre el hilo, pues basicamente es el mismo codigo que pones x=+4 y luego el repaint y al inicar el hilo debe hacerlo... Vi que trabajas con varios graficos, como que quieres hacer un minijuego, bien por ti, si se te ralentiza es mejor usar la clase Graphics2D, pero eso es otro cantar....
Prueba lo que te digo, si no funciona, di que es lo que hace o que error genera.... saludos!